Sé que esta pregunta es antigua, pero la respondería en función del alcance del valor y de dónde debe inicializarse o escribirse. Intento usar el alcance más estrecho posible. Esperemos que lo siguiente aclare más sobre cómo decidir:
Valores protegidos: Esto supone que la clase base y/o la clase heredera solo necesitan acceder al valor, y no por ningún código externo. .
Cuando la clase que hereda tiene que leer, pero nunca tiene que modificar el valor:
Si el valor se puede escribir una vez en el constructor de la clase base, utilice los siguientes, que impide la clase que hereda de escribir en él, y va un paso más allá y sólo permite que se establece en el constructor:
protected readonly bool test;
Si el valor se puede escribir en un método diferente al constructor, pero solo en la clase base, use lo siguiente, lo que impide que la clase heredante lo escriba, pero le permite leer:
protected bool Test { get; private set; }
Cuando la clase que hereda puede modificar el valor, utilice el siguiente, lo que permite tanto la clase que hereda y la clase base para escribir en él en cualquier momento:
protected bool test;
valores privados:. Esto supone que el valor sólo se necesita acceder desde dentro de la clase que se declara en
Si sólo se puede establecer una vez en el constructor, utilice:
readonly bool test;
Si se puede establecer en cualquier lugar en la clase, utilizar:
bool test;
Además, no hay que olvidar que si se declara como una propiedad, debe utilizar PascalCase. Si lo declaras como una variable miembro, debe usar camelCase. Esto facilitará que otros desarrolladores comprendan el alcance.
¿Cómo el uso de las propiedades automáticas facilita la tarea de agregar la verificación? – Rod
Puede cambiar las propiedades automáticas a propiedades normales más adelante y agregar el código que desee, y las personas que usen su dll no tendrán que volver a compilar para usar los ensamblados actualizados. – thecoop