I read somewhere that having public properties is preferable to having public members in a class.
Is this only because of abstaraction and modularity? Are
It is mostly for purposes of abstraction (you can later add validation without breaking existing code, or requiring recompilation).
Even when using auto-properties, there is still a backing field generated by the compiler, and will perform as such.