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
1) Its for encapsulation principles, but other .NET features use properties such as data binding.
2) I'm not sure I agree with that, I've always heard that if the property is a straight get/set its just as fast as a standard field access - the compiler does this for you.
Update: seems to be a bit of both, compiles to method call but JIT-optimized away. Either way, this sort of performance concern is not going to have a meaningful impact on your code. However, note that the guidance around implementing properties is to make them as light-weight as possible, they are not expected by callers to be expensive.