类中的属性与公共声明变量[重复]

Posted

技术标签:

【中文标题】类中的属性与公共声明变量[重复]【英文标题】: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; 
  

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

【问题讨论】:

一个是属性,另一个是字段。 您不会相信,但文档实际上包含关于该主题的an article。 加号:***.com/questions/653536/… 【参考方案1】:

它们是不同的。

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

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

class Name 
    public int x  get; set; 


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

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

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


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

【讨论】:

以上是关于类中的属性与公共声明变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

属性与公共成员变量[重复]

在具有 C++ 中另一个类型的类中声明属性 [重复]

避免公共类中的代码重复

如何在c#中访问内部类中的外部类的变量[重复]

如何访问与内部类同名的外部类中的变量[重复]

如何访问派生类中的私有集属性[重复]