Problem ze zrozumieniem zastosowania tzw. "automatycznych" właściwości

0

Mam problem ze zrozumieniem zastosowania tzw. "automatycznych" właściwości w C#.

Rozumiem przydatność takiego kodu:

public double Zarobki {get; private set; } 

Definiujemy właściwość, której wartość poza klasą będziemy mogli tylko pobierać, bez możliwości modyfikacji.

Po co definiuje się właściwości w poniższy sposób:

public double Zarobki {get; set; }

i czym różni się (pod względem zastosowania) od tej:

public double Zarobki 

?

Wiem, że w tej ostatniej definiujemy pole, a w poprzedniej właściwość. Dla tej właściwości kompilator sam stworzy zmienną prywatną. Nie rozumiem co nam to daje, skoro nie wiemy nawet jak się ona nazywa (bo jest anonimowa). Dzięki za pomoc.

0

właściwość to jest metoda wewnętrzna klasy przez którą to metodę zarządzane jest dane pole klasy o tej samej nazwie...
Można ustawić osobno set jako wewnętrzną jedynie w tej klasie dzięki czemu poza klasą będzie można jedynie odczytywać to pole... z powyższego wynika, iż ustawienie get jako private byłoby bez najmniejszego sensu

0

Robi to sporą różnicę przy zabawie w refleksje i atrybuty.

1

w teorii daje mozliwosc posiadania wlasciwosci + (ukrytego) pola przy minimalnym nakladzie pracy, czemu nie uzywac pola zamiast tego?
a) pola nie wrzucisz w interfejs
b) pola nie rozszerzysz o dodatkowa logike (np walidacje) bez zmieniania klientow klasy
w praktyce nie uzywam setterow w ogole, nie jestem w stanie znalezc zalety takiego zastosowania, a wad pelno

0

Ok, a teraz z drugiej strony - czy są sytuacje kiedy lepiej używać pól zamiast właściwości?

1

zwykle do skladowych prywatnych i/lub static readonly

0

Dziękuję za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1