2009-04-27 159 views
2

只使用公共属性而不是使用公共属性访问私有变量有什么好处?公共属性和私人成员C#

例如

public int iMyInt { get; set; } 

,而不是

private int myint; 
public int iMyInt { get { return myint; } set { myint = value; } } 

除了让.NET经营管理的财产下的变量/记忆,什么是(对于这个问题或缺点)的优势是什么?

回答

11

使用自动属性(第一个示例)需要较少的输入。

强烈建议只有公共财产,而不是公共领域。许多属性都是私有域的简单包装。自动属性为您节省了手动创建属性和后台字段的时间和麻烦。

您提到的简单案例的自动和手动属性背后的实际代码应该几乎相同。

+2

同样有利于使用公共属性,如果您还想利用DataBinding – RobS 2009-04-27 23:43:07

1

直到您想要某个属性被获取或设置时才会发生某种情况,这种方式没有任何区别。

例如,如果您想要一个OnMyIntSet事件,则不能使用自动属性语法。

4

一旦编译成IL,这两者几乎相同。

我个人的经验法则是使用自动属性。它们更加简洁,并且需要更少的打字,而且我知道,当我使用它们时,它们只是一个无逻辑的简单包装。

如果我以后需要添加逻辑,很容易切换到我自己的后台字段,并且没有(外部)后果。

8

我建议比要求更少打字更重要的是提高可读性的代码。我通常会建议使用自动属性作为我的默认选项,并且只有在对它们有特定要求时切换到显式属性。

+2

+1,优点。与他们的支持领域的属性很容易导致大量的锅炉板代码分散您的班级的“重要”部分。 – Michael 2009-04-27 23:45:10

1

我的个人偏好是自动属性,除非有其他必要。

使用自动属性的优点当然是简洁。它占用更少的空间,更易于阅读,打字更容易。

缺点是你不再有权访问私有备份变量,有时你需要那。

因此:当您需要使用私人支持变量时,请使用“旧”方法。如果不这样做,请使用自动属性。切勿使用公共领域。这只是疯狂的谈话。

0

只是快速提示:自动实现的属性必须同时定义get和set访问器。