Pergunta

Se eu tiver uma configuração de classe simples como isto:

class MyClass
{
    private string _myName = string.Empty;

    public string MyName
    {
        get
        {
            return _myName;
        }
    }

    public void DoSomething()
    {
        // Get the name...
        string name = string.Empty;

        name = _myName;

        // OR

        name = MyName;

        // ...and do something with it...
    }
}

O que eu deveria usar, a propriedade pública, ou o membro de dados?

Obviamente, neste exemplo não faz a diferença, uma vez que ambos apenas referência a mesma variável. Mas que sobre os usos reais de propriedades públicas?

Em geral, fazer Pública Propriedades de realizar muito pouco, caso em que não há problema em chamá-los? Ou que as pessoas colocar um monte de funcionalidade em suas propriedades públicas que não deve ser chamado por referências internas de classe?

Eu vi algo em outro post sobre não colocar muita funcionalidade em Propriedades, já examinando-os no depurador pode executar resultados inesperados. Isso é verdade?

Foi útil?

Solução

Use a propriedade - qualquer lógica que podem ser encapsulados dentro dos setters e getters deve aplicar, mesmo dentro da própria classe. Se não há lógica dentro dos getters e setters ainda não é seguro usar os próprios campos, pois se em algum momento você deseja adicionar lógica em torno do acesso a esses campos você terá que refatorar muito mais.

Outras dicas

Eu acredito que você deve fazer referência a propriedade como uma prática geral. Embora neste exemplo particular, realmente não faz muita diferença, o get / set assessores oferecem a possibilidade de fazer um pouco mais de trabalho quando pegar uma propriedade. Por exemplo, muitos de nossa propriedade "pegar" acessores realizar alguma pesquisa dentro de uma estrutura de dados mais complexo ou valores padrão definido se nada foi definido. De modo que o resto da classe pode tirar proveito dessa lógica, fazemos um hábito de usar as propriedades. Só assim não temos que pensar muito sobre isso, tentamos generalizar a prática.

Pode haver casos em que desejam acessar diretamente o membro de dados subjacente, mas que é uma decisão consciente com uma razão específica e tende a ser a exceção.

Eu prefiro propriedades porque eles facilmente lidar com situações de somente leitura e é fácil envolvê-los com qualquer validação básicas que você pode precisar fazer.

Se eu estou apenas devolvendo o valor da variável interna, faço o público variável - não há mal nenhum em fazê-lo. Eu sempre usei propriedades públicas quando eu quiser fazer algo em resposta a qualquer uma visualização ou a alteração do valor - ou seja, escrevê-lo em um banco de dados, conjunto de outra coisa também (como na segunda parte do seu exemplo) <. / p>

A pergunta que você tem que perguntar é se você quer o que acontece dentro de sua classe para desencadear esses eventos. Se fizer isso, da mesma forma que um chamador externo seria, em seguida, acessar os valores através da propriedade. Se você quiser apenas para ler o valor, utilize a variável interna.

Para responder à sua pergunta, não há mal nenhum em fazê-lo de qualquer maneira -. Apenas a consideração dos possíveis efeitos colaterais

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top