【发布时间】:2012-02-17 21:44:49
【问题描述】:
几周前我开始使用 C# 开始了一份新工作(从那里开始我基本上就开始学习了),我已经看到了几种做事方式,我很好奇为什么(看到我很新鲜,这些年来他们都捡到了东西。)
基本上,我试图找出原因:
private int i;
优于:
private int I {get;set;}
如果答案是(我怀疑)为调用 get/sets 生成了额外的 IL,那么为什么会存在自动实现的 get/sets?为什么是
public int i;
差于:
public int I{get;set;}
更好奇为什么我不总是使用属性,或者为什么我不避免像瘟疫这样的自动实现方法,一种或另一种。
当我想到这个问题时,我知道这听起来像是一个合乎逻辑的问题,但在我写它的时候却不是这样,所以我希望它有某种意义。
谢谢
【问题讨论】:
-
一般来说,您会总是使用属性。我认为这就是您问题的答案,或者至少是您应该寻求的答案。至于它们为什么存在,请考虑属性是在底层实现的,具有私有字段,因此必须支持私有字段必须才能使属性正常工作。因此,删除此功能没有多大意义。此外,直到后来才为 C# 发明了自动属性(您在问题中显示的简写语法),因此不久前,程序员不得不手动写出所有支持字段。
-
你使用属性的原因,(你的
int I {get; set;})是因为属性是你希望外界看到你的类的方式。私有财产本质上是无用的。您想使用公共属性而不是公共字段的原因主要是样式,不仅适用于您,也适用于任何使用反射的程序。 -
这已经回答[这里][1] [1]:stackoverflow.com/questions/3035790/…
标签: c# variables properties logic il