[C#] Właściwości - zrozumienie
Ostatnio zmodyfikowano 2014-03-04 12:22
Degusto Temat założony przez niniejszego użytkownika |
[C#] Właściwości - zrozumienie » 2014-02-23 19:27:39 Witam, czytałem sobie o akcesorach get i set i nie jestem pewien czy dobrze je rozumiem.
W tym kodzie właściwość Zmienna "zarządza" polem zmienna tak(oczywiście tylko z zewnątrz klasy)?
class Przyklad { private int zmienna;
public int Zmienna // Właściwość dla pola zmienna { get { return zmienna; } set { zmienna = value; } } }
Jednak w tym kodzie środowisko samo tworzy prywatne pole(można przyjąć, że właściwość == pole teraz) i ten kod równoważny jest z powyższym.
class Przyklad2 { public int Zmienna{ get; set;} }
No i tutaj wniosek. Jeśli chcę po prostu wczytywać i pobierać wartość użyję drugiego kodu. Jeśli będę chciał dodać jakiś warunek np. wczytana wartość będzie ze znakiem przeciwnym to używam pierwszego kodu i zmieniam instrukcje na zmienna = -value;
Proszę o pomoc i napisanie czy dobrze to rozumiem. |
|
Pirotechnik |
» 2014-03-04 12:22:14 Witaj :)
Wytłumaczę Ci to troszkę łopatologicznie (nie jestem informatykiem i standardów nie znam...) a więc: kiedy używasz przykładu 1. to "Zmienna" nie tworzy drugiego obiektu tylko ingeruje w pole "zmienna" (tak na przyszłość, pola nazywaj tak: "_nazwa" - wtedy jest czytelniej), Właściwości używa się, po to aby nie pracować bezpośrednio na polu, a także wewnątrz Właściwości możesz dodać jakieś warunki, porównania, zmienianie innych pól etc... i nie możesz założyć że Pole == Właściwość ponieważ właściwość to inny obiekt i on nie posiada "swojej" wartości tylko wskazuje na wartość pola.
Taka ciekawostka: możesz także użyć właściwości by określić czy pole ma być read only, write only, wtedy używasz tylko get'a albo set'a - w zależności co chcesz uzyskać :)
Pisze dość zawile - zdaje sobie z tego sprawę ;) |
|
« 1 » |