【发布时间】:2015-07-10 10:46:08
【问题描述】:
我为什么要这样做:
public T X { get; set; }
而不是这个:
public T X;
人们(包括一些关于 SO 的答案)告诉我“如果你以后想改变行为怎么办?”是对此的答案,但事实并非如此,因为我可以将我的 public T X; 转换为
public T X {
get { blabla; }
set { blybly; }
}
编辑:在发布更多关于“阅读本文”和“阅读那个”的链接之前,您可以检查这些链接。其中 99% 主要包含引用其他链接的其他人,实际上没有人给出在字段上使用属性的适当理由。
这是一个流行答案的示例:“您可以将 setter 设为私有
public T X { get; private set; }
很明显,如果我想要一个私有的 setter,我会创建一个属性。但如果我不这样做,为什么不只使用一个字段?如果我后来决定我想要一个私人二传手,为什么我不能将我的字段从 public T X; 更改为 public T X {get; private set; }?
【问题讨论】:
-
“但这不是真的”——这取决于你是否关心二进制兼容性、源代码兼容性、反射兼容性......
-
我脑海中只有一个区别:反射。当您突然将其更改为属性时,您会破坏检查字段的代码。
-
@CharlesMager 您发布的链接上没有正确的答案。
-
@Skamah One 该链接中有很多答案,我只是在其中阅读了它们,它们似乎是您在字段上使用属性的绝佳理由
标签: c# properties field