只读变量 VS 只读属性

8
public static string BoldStartTag { get { return "<B>"; } }

VS

   public static readonly string BoldStartTag  = "<B>"; 

或者
public const string BoldStartTag  = "<B>"; 

哪一个更好?我认为只读/常量变量更好,因为在属性中没有进行任何计算(只是返回)。此外,C#编译器会为只读属性生成一个方法,而只读变量只是IL中的一个变量。
你有什么想法吗?

1
小修正 - const 前面不应该有 static - Hans Olsson
3个回答

9

Jeff Atwood曾经写过一篇关于属性 vs 公共变量的文章。

我认为这里需要考虑的最有趣的观点是他在更新中提到的:

  • 反射在变量和属性上有不同的工作方式,因此如果您依赖反射,则更容易使用所有属性。
  • 无法对变量进行数据绑定。
  • 将变量更改为属性是一个破坏性的变化。

1
+1,非常棒的链接。对于这种特定情况,我不打算进行任何数据绑定。因此,一个常量就足够了? - Ashish Gupta

4

出于封装的原因,公共值的首选方法始终是属性。

对于您提供的具体示例,我建议使用 const -- 毕竟 BoldStartTag 不会很快更改。


是的,当然。请看我的编辑。我只是想听听在这种情况下使用只读属性的意见。 - Ashish Gupta

1

为什么不使用const?我认为将<B>作为粗体开始标记是相当固定的。


是的...当然...只是想听听在这种情况下使用只读属性的意见。 - Ashish Gupta
我还以为 <b> 是加粗的开始标签呢 ;-). - binki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接