C#属性getter和setter实现

时间:2013-05-29 14:35:29

标签: c# properties get setter getter

的实施有什么区别
Class cl1
{
    public int var{get;set;}
}

Class cl1
{
    public int var;
}

我的意思是,两者都是这样实现的 -

void Main()
{
    cl1 obj = new cl1();
    obj.var = 25;
    int k = obj.var;
}

如果没有区别,那么为什么我在库装配中看到第二个实现如此常见?

1 个答案:

答案 0 :(得分:0)

我想到两个原因:

  1. 它隐藏了实现:属性var可能使用的私有字段不是var,也可能根本不使用私有字段,客户端不会知道这个

  2. 更容易更改:如果在您的代码中使用字段obj.var 100次,并且在某些时候您必须更改该字段的某些内容,您必须修改所有调用,而如果您有属性,则可以以更简单的方式修改实现,而无需修改所有调用(至少如果您不更改属性的签名)

  3. 现在还没有出现在我脑海中的其他原因