Acessando membros em sua própria classe: use propriedades (automáticas) ou não?

Eu criei essa "pergunta" como um wiki da comunidade, porque não há resposta certa ou errada. Gostaria apenas de saber como a comunidade se sente sobre esse problema específico.

Quando você tem uma classe com variáveis de instância e também criou propriedades que são simplesmente getters e setters para essas variáveis de instância, você deve usar as propriedades dentro de sua própria classe ou sempre deve usar a variável de instância?

Ter propriedades automáticas no C # 3.0 tornou essa uma decisão ainda mais difícil.

Usando propriedades:

public class MyClass
{
    private string _name;

    // could be an auto-property of-course
    public string Name { get { return _name; } set { _name = value; } }

    public void Action()
    {
        string localVar = Name;
        // ...
        Name = "someValue";
        // ...
    }
}

Usando variáveis de instância:

public class MyClass
{
    private string _name;

    public string Name { get { return _name; } set { _name = value; } }

    public void Action()
    {
        string localVar = _name;
        // ...
        _name = "someValue";
        // ...
    }
}

(para aqueles que odeiam prefixos de membros, peço desculpas)

Pessoalmente, eu sempre uso o último (variáveis de instância), porque sinto que as propriedades devem ser usadas apenas porde outros aulas, não você mesmo. É por isso que também fico longe de propriedades automáticas.

Obviamente, as coisas mudam quando o configurador de propriedade (ou getter) faz um pouco mais do que apenas agrupar a variável de instância.

Existem razões convincentes para escolher um ou outro?

questionAnswers(6)

yourAnswerToTheQuestion