6

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

public int x;

public int x { get; set; }

?

4

3 回答 3

5

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

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

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

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

作为 C# 中的一条规则,大多数时候任何公共成员都应该作为属性而不是字段公开。

于 2013-11-09T20:22:48.753 回答
0

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

第二个是公共财产

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

属性有很多用途:它们可以在允许更改之前验证数据;他们可以透明地公开一个类上的数据,这些数据实际上是从其他来源(例如数据库)检索到的;他们可以在数据更改时采取行动,例如引发事件或更改其他字段的值。

于 2013-11-09T20:22:12.883 回答
0

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

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

当我们设置属性时 - 我们通知某些东西(PropertyChanged())值已更改。仅使用该字段将非常困难

于 2013-11-09T20:26:21.847 回答