使用没有私有字段的属性时会发生什么

时间:2014-09-18 19:51:45

标签: c# properties field

我试图帮助我的朋友理解诸如字段和属性以及getter / setter之类的内容。然后,他使用没有私人领域的房产,并告诉我它有效。我甚至都不知道这是可能的,而且似乎无法在网上找到太多关于它的信息。

举个例子:

public int Number { get; set; }

而不是:

private int number;
public int Number
{
   get { return number; }
   set { number = value; }
}

它似乎有用(据我所见),但现在我有以下问题:

  • 幕后发生了什么?
  • 首选哪种方式?
  • 任何利弊?

编辑:

我一直以为{得到;组;与get {return x;相同} set {x = value; }。哦,好吧,我现在知道了。然而问题仍然是一样的。一个被认为比另一个好吗?优点/缺点?

1 个答案:

答案 0 :(得分:1)

在第一种情况下,编译器会自动创建一个私有字段作为属性的后备存储,为其提供一个在用户代码中无法访问的名称,并创建获取和设置其值的方法。

在您的代码中,您需要花时间明确地执行此操作,并且还在该支持字段的类范围内创建有效的标识符,与前面的示例不同。