2011-09-24 46 views
0

我有一个类库项目。我在下面有一个物业。这不是一个只读属性C中的属性获取器设置器#

private Int32 ABC ; 
public Int32 ABCD 
     { 
      set 
      { 
       this.ABC = value; 
      } 
      get 
      { 
       return this.ABC; 
      } 
     } 

我的问题是,是否有必要声明私有变量相同,的getter/setter?

编辑

我的意思是可以把它像下面?

public Int32 ABCD {} 
+0

删除了 “{获取;集;}” 从问题。 – Pankaj

+1

为什么?这是做到这一点的正确方法。 –

+0

但下面提到的答案是说与你相反! – Pankaj

回答

5

Automatic property声明要求在括号中的get; set;语句(这是你在你原来的问题有什么):

public Int32 ABCD { get; set; } 

的空属性块是无效的。

1

如果你做第二选择,C#会为你创建第一个选择。

+0

更新我的问题。 – Pankaj

3

使用在C#3.0(VS 2008)或更高版本中引入的自动实现的属性。
http://msdn.microsoft.com/en-us/library/bb384054.aspx

public Int32 Abcd {get;set;} 

编译器为您创建支持字段。但它是匿名的,无法访问。如果稍后发现需要访问支持字段,则可以显式声明它并使用该字段重新实现getter和setter,而不会中断接口。

1

是否有必要声明相同的私人变量和getter/setter?

如果你的意思是有必要使用私有变量然后是的,这是(除非您使用BoltClock提到的自动方法)。你应该记住,这是一个完整的代码块,所以你可以在那里做几乎任何你喜欢的事情 - 尽管你应该在理性的范围内做,因为你不想要任何会让访问属性过慢的东西。

例如,更改属性可能会有副作用,即可能需要更新另一个属性,或者您可能不得不通知其他属性也发生了更改。

如果你没有通知或做其他事情,那么自动getter/setter方法开发得更快(并不是声称它是最快(或最慢)执行)。

2

使用自动实现的属性,它从2008年interduced:

public Int ABCD 
    { 
     set; 
     get; 
    } 

但不同的是默认值,即在支持字段属性,你可以在变量,但在这种情况下,默认设置的默认值是.NET默认。 (实际上你应该在构造函数中初始化它的默认值)。

1

你可以像这样

public string ABCD { get;set;}