我有一个类库项目。我在下面有一个属性。它不是只读属性
private Int32 ABC ;
public Int32 ABCD
{
set
{
this.ABC = value;
}
get
{
return this.ABC;
}
}
我的问题是,是否有必要声明私有变量和getter / setter?
修改
我的意思是它会像下面一样吗?
public Int32 ABCD {}
答案 0 :(得分:5)
答案 1 :(得分:3)
使用C#3.0(VS 2008)或更高版本中引入的自动实现的属性。
http://msdn.microsoft.com/en-us/library/bb384054.aspx
public Int32 Abcd {get;set;}
编译器会为您创建支持字段。但它是匿名的,无法访问。如果稍后您发现需要访问支持字段,则可以显式声明它并使用该字段重新实现getter和setter,而不会破坏您的界面。
答案 2 :(得分:2)
使用自动实施的属性,它引自2008年:
public Int ABCD
{
set;
get;
}
但差异是默认值,即在具有支持字段的属性中,您可以在变量中设置默认值,但在这种情况下,默认值为.net默认值。 (实际上你应该在构造函数中为默认值启动它。)
答案 3 :(得分:1)
如果你做第二个选择,C#将为你创建第一个选择。
答案 4 :(得分:1)
是否有必要声明私有变量和getter / setter?
如果你的意思是是否需要使用私有变量然后是,那就是(除非你使用BoltClock提到的自动方法)。你应该记住它是一个完整的代码块,所以你可以在那里做任何你喜欢的事情 - 虽然你应该在合理的范围内做,因为你不希望任何会减慢对属性的访问速度太多的事情。 / p>
例如,更改属性可能会产生副作用,即可能需要更新其他属性,或者您可能必须通知其他属性也已更改。
如果你没有通知或做任何其他事情,那么自动getter / setter方法开发得更快(不是声称它是执行速度最快(或最慢))。
答案 5 :(得分:1)
你可以这样做
public string ABCD { get;set;}