C# propriedade ou campo protegidos
protected bool test { get; set; }
ou
protected bool test;
5 answers
A prática sugerida é fazer dela uma propriedade . A assinatura muda dependendo se é um campo ou uma propriedade, o que pode causar problemas se você estiver cruzando assembléias. Se o tornares uma propriedade para começar, nunca terás este problema. (muitas vezes mais tarde você quer adicionar lógica quando a propriedade é lida ou escrita.)
Em C#, a auto-implementação da propriedade é tão fácil, que não há razão para não o fazer. Além disso, torna as coisas mais claras. Se for realmente destinado a ser usado pelo mundo exterior como parte do funcionamento do objeto, torná-lo uma propriedade. Caso contrário, um futuro programador pode se perguntar se você fez um campo protegido em vez de privado por acidente.Propriedade, apoiada por um campo privado.
Esta pergunta pode ser útil
Valores protegidos: isto assume que o valor só precisa de ser acedido pela classe base e/ou pela classe herdeira, e não por qualquer código externo...
-
Quando a classe herdeira tem de ler, mas nunca tem que modificar o valor:
-
Se o valor pode ser escrito uma vez que no construtor da classe base, use a seguinte, o que impede a herdar da classe de escrever para ele, e vai um passo além e só permite que ele seja definido no construtor:
protected readonly bool test;
-
Se o valor puder ser escrito num método diferente do construtor, mas ainda assim apenas na classe de base, use o seguinte, o que impede a classe herdeira de escrever - lhe, mas permite-lhe ler:
protected bool Test { get; private set; }
-
-
Quando a classe herdeira pode modificar o valor, use o seguinte, o que permite tanto a classe herdeira como a classe base escrever a ela em qualquer ponto:
protected bool test;
Valores privados: isto assume que o valor só precisa de ser acedido a partir da classe em que é declarado.
-
Se só puder ser ajustado uma vez no construtor, uso:
readonly bool test;
-
Se puder ser definido em qualquer ponto da classe, use:
bool test;