Wiem, że to pytanie jest stare, ale odpowiedziałbym na nie w oparciu o zakres wartości oraz miejsce, w którym należy je zainicjować lub napisać. Staram się korzystać z możliwie jak najmniejszego zakresu. Mam nadzieję, że dodaje się uczynić go bardziej jasne, w jaki sposób zdecydować:
chronione wartości: ta zakłada, że wartość musi jedynie być dostępne przez klasę bazową i/lub klasy dziedziczenie, a nie przez jakiegokolwiek kodu na zewnątrz .. .
Gdy klasa dziedziczenia musi czytać, ale nie musi zmodyfikować wartość:
Jeżeli wartość może być napisany raz w konstruktorze klasy bazowej, należy użyć następującego, który zapobiega dziedziczy klasę od pisania do niego i idzie o krok dalej i tylko pozwala na jej ustawienie w konstruktora:
protected readonly bool test;
Jeśli wartość można zapisać w innej metodzie, innej niż konstruktor, ale nadal tylko w klasie bazowej, użyj poniższego, co zapobiega zapisywaniu klasy dziedziczącej, ale pozwala mu odczytać:
protected bool Test { get; private set; }
gdy klasa dziedziczenia może zmieniać wartość należy stosować następujące, które umożliwia zarówno klasa dziedziczenia i klasa bazowa zapisu do niej w każdym punkcie:
protected bool test;
wartości indywidualnego. ta zakłada, że wartość musi jedynie być dostępne od wewnątrz klasy jest zadeklarowany w
Jeżeli można ustawić tylko raz w konstruktorze, należy:
readonly bool test;
Jeżeli można ustawić w dowolnym miejscu w klasie, należy:
bool test;
Nie należy również zapominać, że jeśli zadeklarować ją jako właściwość, należy użyć PascalCase. Jeśli zadeklarujesz to jako zmienną składową, powinieneś użyć camelCase. Ułatwi to innym programistom zrozumienie zakresu.
W jaki sposób użycie autoproperties ułatwia weryfikację? – Rod
Możesz zmienić autoproperties na normalne właściwości później i dodać dowolny kod, a ludzie używający biblioteki dll nie będą musieli rekompilować, aby użyć zaktualizowanych zestawów. – thecoop