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

时间:2010-04-14 01:50:10

标签: 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; }
    }
}

1 个答案:

答案 0 :(得分:8)

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

使用属性getter和setter的好处,即使在实现类本身中:当/如果你需要在将来更改getter / setter的实现时,例如添加所需的副作用,你的代码将会已经处于有利位置以兑现新的getter / setter语义。