通过调用关联的属性而不是数据成员本身来初始化ctor内的私有数据成员是一种好的做法吗?

1 c# properties

interface IAnimal
{
    string Name { get; set; }
}

class Dog : IAnimal
{
    private string name;
    public Dog(string name)
    {
        Name = name;
    }

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

dth*_*rpe 8

一般情况下,除非有特殊原因,否则最好尽可能通过属性getter和setter.如果属性设置器具有您在特定情况下不想要的副作用(如触发通知),则可以直接从对象内分配到支持字段,但尽量避免陷入这种情况.

使用属性getter和setter的好处是什么,即使在实现类本身:当/如果你需要在将来更改getter/setter的实现时,例如添加所需的副作用,你的代码已经在一个很好的位置,以兑现新的getter/setter语义.