只读变量VS只读属性

时间:2010-06-01 09:23:13

标签: c# oop

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

VS

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

public const string BoldStartTag  = "<B>"; 

哪一个更受欢迎?我会认为readonly / constant变量因为我没有在属性中进行任何计算(只是返回)。此外,C#编译器将弹出readonly属性的方法,而readonly变量只是IL中的变量。

你的想法?

3 个答案:

答案 0 :(得分:9)

杰夫阿特伍德前段时间写了一篇关于Properties vs Public Variables的文章。

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

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

答案 1 :(得分:4)

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

但是,对于您的具体示例,我会使用const - 它不会像BoldStartTag那样很快就会改变。

答案 2 :(得分:1)

为什么不使用const?我原本以为将<B>作为粗体开头标记将是相当不错的。