变量属性
本文关键字:属性 变量 | 更新日期: 2023-09-27 18:34:22
这两者都一样吗:
private int x;
public int X
{
get { return x; }
set { x = value; }
}
和
public int X
{
get { return x; }
set { x = value; }
}
我的意思是使用第二种情况就足够了,还是有特殊情况我应该使用第一种情况?
因为我有时会看到第一种情况的代码,有时看到第二种情况的代码,所以我混淆了
第二个不会编译,因为 x 没有被声明! 如果你不想对X有任何控制,那么你可以写:
public int X { get; set; }
您的第二种情况无法编译 - 因为未定义"x"(小写)。
另一种选择是使用"自动属性"
public int X {get; set;}
所有这些都是使编译器在后台自动生成一个支持字段,您无法直接访问该字段,但与您的第一个示例基本相同。
如果当前定义范围内不存在第二种情况x
则不能使用第二种情况!
如果您在第二种情况下没有在任何地方看到 x
声明,那么它可能是某些父类/基类中的受保护字段,尽管这不太可能。
或者您的意思是创建一个没有显式支持字段的自动属性?通常会出现这种情况或第一种情况:
public int X { get; set; }
第二个代码片段是否编译成功。
以下在概念上是相同的
private int x;
public int X
{
get { return x; }
set { x = value; }
}
和
public int X {get;set;}
为什么在概念上相同:因为第二条语句将创建一个具有任意名称(不一定是 x)的支持 int 字段