【问题标题】:Property vs public declaration variable in a class [duplicate]类中的属性与公共声明变量[重复]
【发布时间】:2012-09-05 22:54:05
【问题描述】:

可能重复:
What is the difference between a field and a property in C#

这有什么不同:

class Name {
  public int x;
}

还有这个:

class Name {
  int cx;
  public int x {
    get { return cx; }
    set { cx = value; }
  }
}

是一样的还是有一些不同? 谢谢

【问题讨论】:

标签: c# class properties public


【解决方案1】:

它们是不同的。

在第一个x 是一个字段,在后者x 是一个属性。虽然属性在代码中“像字段一样被访问”,但这正是 C# 的美妙之处;不同的定义实际上会导致不同的不兼容类型1.

使用自动属性相当于后者(但更容易编写):

class Name {
    public int x { get; set; }
}

我喜欢 Brian Rasmussen 的 this answer,提出一个相关/重复的问题:

字段和属性看起来相同,但它们 [相同]。属性是方法,因此属性不支持某些东西,还有一些可能会发生在属性上但不会发生在字段上的事情。

答案接着列出了一些关键差异,包括用法和可观察语义。


1 将字段更改为属性(反之亦然)是一种类型破坏更改,并且需要早期绑定(例如静态类型)代码针对新类型重新编译

【讨论】:

    猜你喜欢
    • 2012-08-06
    • 1970-01-01
    • 2014-12-03
    • 2011-11-22
    • 2015-03-27
    • 2020-06-10
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多