以下两者有何区别?
class C
{
// One:
public static readonly int ValueAsAMember = 42;
// Two:
public static int ValueAsAProperty { get { return 42; } }
}
我习惯性地采用第一种方式来编写常量(除非它们是私有的/内部的,在这种情况下我使用const关键字),但最近看到了第二种形式。
在可读性、约定、性能或其他方面,两种方式是否存在优劣之分?
const
,这与您的第一行代码几乎相同。第二行引入了一个方法调用,虽然可能会被内联,但这有什么意义呢? - siridereadonly
的唯一用途是在构造函数中设置它们,通常是为了TDD和设计模式(WPF&SL)的接口。在此示例中使用const
和C#命名标准,而不是c / c ++ 呵呵;) - Stígandrconst
在IL中是在编译时被替换的。假设您有两个程序集A和B,程序集B引用程序集A的常量值。如果您更改了程序集A中的const
值,但没有使用新编译版本更新程序集B,则可能会出现奇怪的行为,其中两个程序集之间的值不同。这绝对是一种边缘情况,但在设计公共API时需要考虑这个因素。 - Daniel Mann