So che questa domanda è obsoleta, ma vorrei rispondere in base all'ambito del valore e al punto in cui deve essere inizializzato o scritto. Cerco di usare il più stretto possibile. Speriamo che la seguente vi renderà più chiaro su come decidere:
valori protette: questo assume il valore ha solo bisogno di essere accessibile dalla classe base e/o la classe che eredita, e non da un codice esterno .. .
Quando la classe eredita deve leggere, ma non deve modificare il valore:
Se il valore può essere scritto una volta nel costruttore della classe base, utilizzare il seguente, che previene la sottoclasse dalla scrittura ad esso, e fa un passo avanti e consente solo di essere impostato nel costruttore:
protected readonly bool test;
Se il valore può essere scritto in un metodo diverso dal costruttore, ma solo nella classe base, utilizzare quanto segue, che impedisce alla classe ereditata di scrivervi, ma consente di leggere:
protected bool Test { get; private set; }
Quando la sottoclasse può modificare il valore, utilizzare i seguenti, che permette sia la sottoclasse e la classe di base per scrivere ad essa in qualsiasi punto:
protected bool test;
valori private:. questo presuppone il valore ha solo bisogno di essere accessibile dall'interno della classe che viene dichiarata in
Se può essere impostato solo una volta nel costruttore, utilizzare:
readonly bool test;
Se può essere impostato in qualsiasi punto della classe, utilizzare:
bool test;
Inoltre, non dimenticare che se si dichiara come una proprietà, dovrebbe utilizzare PascalCase. Se lo dichiari come variabile membro, dovrebbe usare camelCase. Ciò renderà più semplice per gli sviluppatori la comprensione dell'ambito.
In che modo l'utilizzo delle autoproprie facilita l'aggiunta della verifica? – Rod
È possibile modificare le proprietà autoproprie in seguito, e aggiungere il codice desiderato e le persone che utilizzano la DLL non dovranno ricompilare per utilizzare gli assembly aggiornati. – thecoop