- Można bezproblemowo zmienić założenia gettera i settera bez kombinowania i grzebania bezposrednio w kodzie.
- Masz, dajmy na to pole "Age" do ustawiania wieku. Możesz zrobić to w ten sposób:
public int Age;
albo
public int Age { get; set; }
Jesli kiedys dojdziesz do słusznego wniosku, że wiek powinien być większy od zera, mając własciwiosć, przerobisz to na:
public int Age
{
get
{
...
}
set
{
if (value <= 0)
{
throw new ArgumentOutOfRangeException();
}
...
}
}
- Jesli chcesz sprawdzić kiedy jakakolwiek metoda próbuje odczytać/zmienić daną własciwosć wystarczy ustawić Breakpoint na getterze/setterze
- Własciwosci można używać do Databindingu, pól nie.
- Można zrobić cos takiego
public int Age {get; private set;}
Dzięki czemu metody wszystkich klas będą mogły odczytać wartosć ale tylko metody macierzystej klasy będą mogły ją zmieniać.
Tyle mi do głowy przychodzi. W małych programikach służących do nauki faktycznie często nie odczuwa się różnicy :)