Должен ли я использовать открытые свойства и частные поля или открытые поля для данных?

В большей части кода, который я видел (на SO, thecodeproject.com и я, как правило, делаю это в своем собственном коде), я видел публичные свойства, создаваемые для каждого отдельного частного поля, которое содержит класс, даже если они наиболее основной типget; set; лайк:

private int myInt;
public int MyInt 
{
     get { return myInt; }
     set { myInt = value }
}

Мой вопрос: как это отличается от:

public int MyInt;

и если мы должны использовать свойства вместо открытых полей, почему мы должны использовать их в этом конкретном случае? (Я не говорю о более сложных примерах, когда геттеры и сеттеры действительно делают что-то особенное или есть только один метод get или set (только для чтения / записи), а не просто возврат / установка значения частного поля). Кажется, что он не добавляет никакой дополнительной инкапсуляции, он только дает красивый значок в IntelliSense и помещается в специальный раздел на диаграммах классов!

Ответы на вопрос(13)

Ваш ответ на вопрос