这些属性声明之间有什么区别?它们是如何工作的,为什么是首选。
public string aString {get;set;}
OR
private string bString = "";
public string aString
{
get { return bString; }
set { bString = value; }
}
注意:这不是一个紧急或重要的问题,而是要求知道为什么某些事情应该以某种方式完成的人。另外,请举例说明哪种方案最适合每种实施方式。
答案 0 :(得分:3)
首先是automatic property,第二个是我们已知的经典属性。
在C#3.0及更高版本中,自动实现的属性生成 当不需要额外的逻辑时,属性声明更简洁 在物业访问者。它们还使客户端代码能够创建 对象。声明属性时,如下所示 例如,编译器创建一个私有的匿名支持字段 只能通过属性的get和set访问器访问。
如果在get和set part属性中没有任何特殊逻辑,那么你可以使用自动属性,因为代码少,代码少,意味着更容易维护,减少错误。
只有在需要在属性上添加一些逻辑(如验证)时,才应切换到经典属性语法。
答案 1 :(得分:1)
<强>设计强> 如果您需要在确切的分配时刻(提出事件,更改其他字段,保存欠载信息,写入文件以及大量其他可能性),请使用秒。
实用:如果您只是需要调试,请使用秒,因为您无法在自动生成的属性上放置breakpoint
。
在所有其他情况下首先使用。
答案 2 :(得分:0)
最明显的区别是你不能设置aString变量并返回它,因为你总是返回bString ...
答案 3 :(得分:0)
一个区别是,在自动属性的情况下,您不能拥有私人设置器。这只是一种语言快捷方式或语法糖,使事情更容易开发(生成的代码看起来更干净......)。 如果查看已编译的程序集,编译器将使用与“经典”变体中完全相同的代码。