Avatar
Ondřej Krsička
Redaktor
Avatar
Ondřej Krsička:

Ahoj, proč bych měl používat vlastnosti? Oproti veřejné proměnné mi to přijde zbytečně zdlouhavé a prý je to i pomalejší. Tak proč to používat?

class Point
{
        public int x, y;
}

Mi přijde lepší, než

class Point
{
        public int X{ get; set; }
        public int Y{ get; set; }
}

PS: Asi bych pro takovéto věci použil spíše struct, ale záleží na situaci.

EDIT: Ptám se na případy, kdy je get a set takhle prázdné, pokud je ve vlastnosti nějaká logika, tak to smysl dává...

Editováno 19. dubna 20:23
 
Odpovědět 19. dubna 20:22
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

vždy a všechny public fieldy dělej jako property, je k tomu strašně moc důvodů. Některé z nich:

  1. Property ti umožňují overridovat je a mít je virtual
  2. Property ti umožňují velmi jednoduše pridavat logiku, aniz by si musel refaktorovat ostatni kod.
  3. Propertam muzes davat access level
  4. Téměř každý UI framework/ binder property vyžaduje

jistě si teď říkáš.. no jo, ale přeci můžu kdykoliv změnit :

public int x;

za

public int x {get; set;}

Pravde je taková, že nemůžeš,.. narušíš tím tedy vnitřní contract, takže ti to přestane fungovat, poiud tam třeba komunikujes mezi 2ma DLLkama.. (jelikož property jsou implementovane vnitrne spise jako metody, než místo v paměti).

Public fieldy tedy nepoužívej,., pouze tě omrzí do budoucna a nepřineou ti vůbec žádnou výhodu.

Ohledně výkonu.. auto property: neco {get; set;} nemají žádné výkonnostní dopady, protože jsou inlineovány.

Akceptované řešení
+20 Zkušeností
Řešení problému
 
Nahoru Odpovědět  +2 20. dubna 23:59
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.