(重复)'public int x;' 和 'public int x { get; set; } 之间的区别


两者

之间有什么区别(如果有的话)

public int x;

public int x { get; set; }

第一个称为字段。 第二个是属性,在本例中是自动实现的属性

属性的作用类似于字段,但使用 getter 和 setter 函数来检索和设置值。 上述属性的另一种编写方法如下:

private int _x;
public int X
{
    get
    {
        return _x;
    }
    set
    {
        _x = value;
    }
}

在这种情况下,变量_x称为支持字段。 使用自动实现的属性,您无法访问支持字段或在 getter/setter 中自定义代码,但如果不需要,则它更短、更简洁。

在 C# 中,大多数情况下,任何公共成员都应作为属性而不是字段公开。

这两者之间的区别在于,属性可以做更多的事情,而不仅仅是获取/设置变量。
举个例子:

private int _x;
public int x 
{ 
    get 
    {
      //do something
      return _x;
    } 
    set
    {
      if(_x != value)
      PropertyChanged("x");
      _X = value;
    }
}

当我们设置属性时 - 我们通知某些东西(PropertyChanged())值已更改。仅凭该领域很难做到

第一个是公共变量,可以从任何地方访问。

第二个是公共财产

有关详细信息,请查看属性教程。

属性有许多用途:它们可以在允许之前验证数据 改变;他们可以透明地在类上公开数据,其中数据 实际上是从其他来源(例如数据库)检索的;他们 可以在数据发生更改时执行操作,例如引发事件,或者 更改其他字段的值。

最新更新