变量属性

本文关键字:属性 变量 | 更新日期: 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 字段