0

可能重复:
将私有成员封装为属性与定义没有私有成员的属性有什么区别?

在 C# 中,通常当我定义一个属性时,我为 get 和 set 声明并实现一行或多行。例如

public bool IsThere
{
   get { return _isThere; }
   set { _isThere = value;}
}

现在这是什么意思?

public bool IsThere
{
   get;
   set;
}
4

2 回答 2

5

这些是自动属性。它们的工作方式与您的第一个示例相同,但允许您省略不必要的源代码。

当您的 getter/setter 方法不再存在时,最好使用它们。

它们还允许您稍后向 getter/setter 方法添加逻辑,而不会破坏任何调用代码(即使您还必须自己实现私有支持属性)。

于 2012-10-18T20:35:07.477 回答
2

这是一个自动实现的属性(自动属性)。

C# 编译器将自动为 get/set 方法创建一个私有字段成员以读取/写入。


请注意,自动属性存在限制(目前)。例如,您不能使用修饰符,例如readonly,尽管您仍然可以标记它,因为private set它并不完全相同。

于 2012-10-18T20:35:44.883 回答