Czy należy używać właściwości publicznych i pól prywatnych lub pól publicznych do danych?

W większości kodu, który widziałem (na SO, thecodeproject.com i zazwyczaj robię to w moim własnym kodzie), widziałem, że właściwości publiczne są tworzone dla każdego pojedynczego pola prywatnego, które zawiera klasa, nawet jeśli są one najbardziej podstawowy typget; set; lubić:

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

Moje pytanie brzmi: jak to się różni od:

public int MyInt;

a jeśli powinniśmy używać właściwości zamiast pól publicznych, dlaczego mielibyśmy ich używać w tym konkretnym przypadku? (Nie mówię o bardziej złożonych przykładach, w których gettery i settery faktycznie robią coś specjalnego lub jest tylko jeden get lub set (tylko do odczytu / zapisu), a nie tylko zwracanie / ustawianie wartości pola prywatnego). Wydaje się, że nie dodaje żadnej dodatkowej enkapsulacji, a jedynie daje ładną ikonę w IntelliSense i umieszcza się w specjalnej sekcji na diagramach klas!

questionAnswers(13)

yourAnswerToTheQuestion