C#3.0 auto
注意:这是在我开始使用C#时发布的。 凭借2014年的知识,我可以真正地说,自动属性是C#语言发生过的最好的事情之一。
我习惯使用私有和公共字段在C#中创建我的属性:
private string title;
public string Title
{
get { return title; }
set { title = value; }
}
现在,在.NET 3.0中,我们获得了自动属性:
public string Title { get; set; }
我知道这更多是一个哲学/主观的问题,但是有没有任何理由使用这些自动属性,除了为每个字段保存五行代码? 我个人的抱怨是,这些属性隐藏了我的东西,我不是黑魔法的忠实粉丝。
事实上,隐藏的专用字段甚至不会显示在调试器中,这是可以的,因为get / set函数什么都不做。 但是当我想实际实现一些getter / setter逻辑时,我必须使用私有/公共对。
我看到了保存大量代码(一对六行)而不失去稍后改变getter / setter逻辑的能力的好处,但是我可以通过简单地声明一个公共字段“公共字符串标题”来解决这个问题{get; 组; }块,从而甚至节省更多的代码。
那么,我在这里错过了什么? 为什么会有人真的想要使用自动属性?
我们一直在堆栈溢出中使用它们。
您也可能对“属性与公共变量”的讨论感兴趣。 恕我直言,这真的是这是一个反应,为此,这是伟大的。
是的,它只是保存代码。 当你有很多的阅读时,它更容易阅读。 他们写得更快,更容易维护。 保存代码总是一个很好的目标。
您可以设置不同的范围:
public string PropertyName { get; private set; }
所以只能在课堂内改变财产。 这并不是真正不变的,因为你仍然可以通过反射来访问私有设置器。
从C#6开始,您还可以创建真正的readonly
属性 - 即不能在构造函数之外更改的不可变属性:
public string PropertyName { get; }
public MyClass() { this.PropertyName = "whatever"; }
在编译时将会变成:
readonly string pName;
public string PropertyName { get { return this.pName; } }
public MyClass() { this.pName = "whatever"; }
在拥有大量成员的不可变类中,这会节省大量的额外代码。
使用字段而不是属性的三大缺点是:
上一篇: C# 3.0 auto