没有身体的属性

时间:2012-10-18 20:34:28

标签: c# properties automatic-properties

  

可能重复:
  What’s the difference between encapsulating a private member as a property and defining a property without a private member?

在C#中,通常在我定义属性时,我为get和set声明并实现一行或多行。 e.g。

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

现在这是什么意思?

public bool IsThere
{
   get;
   set;
}

2 个答案:

答案 0 :(得分:5)

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

当你的getter / setter方法不再适用时,最好使用它们。

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

答案 1 :(得分:2)

这是Auto-Implemented Property(自动属性)。

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


请注意,自动属性存在限制(暂时)。例如,您不能使用readonly等修饰符,但仍然可以将其标记为private set它不完全相同。