公共属性和私有成员 C#

3

仅使用公共属性而不是使用公共属性访问私有变量的好处是什么?

例如:

public int iMyInt { get; set; }

替代

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

除了让.NET管理属性下面的变量/内存之外,还有什么优点(或缺点)呢?
6个回答

11

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

强烈建议仅使用公共属性而不是公共字段。许多属性只是私有字段的简单包装器。自动属性可节省手动创建属性和支撑字段的时间和麻烦。

对于您提到的简单情况,自动属性和手动属性的实际代码应该几乎相同。


2
如果你想利用数据绑定,使用公共属性也是有优势的。 - RobS

8
我认为比起减少打字量,更重要的是代码的可读性。我一般建议使用自动属性作为默认选项,并仅在有特定需求时才切换到显式属性。

2
+1,非常好的观点。使用其支持字段的属性很容易导致大量的样板代码,这会分散注意力,使得类中的“重要”部分变得不那么突出。 - Michael

4

一旦编译为IL,两者将几乎相同。

个人的经验法则是使用自动属性。它们更简洁,需要更少的输入,而且我知道,当我使用它们时,它们只是一个简单的包装器,没有逻辑。

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


1

在属性被获取或设置时,除非你想要发生某些事情,否则两种方式没有区别。

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


1

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

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

缺点是您不再可以访问私有后备变量,有时您需要它。

所以:当您需要使用私有后备变量时,请使用“旧”方法。当您不需要时,请使用自动属性。永远不要使用公共字段。那只是疯话。


0
只是一个简单的提示:自动实现属性必须定义get和set访问器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接