Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C#] Właściwości - zrozumienie

Ostatnio zmodyfikowano 2014-03-04 12:22
Autor Wiadomość
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.
P-105159
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ę ;)
P-105600
« 1 »
  Strona 1 z 1