也有申报“常量”第三条道路:一个公共静态属性。
public static string ConstString {get{return "First test";}}
这具有一个只读字段的版本语义,但是如果抖动内联吸气它成为JIT-时间常数。与const
不同,它可以用于用户定义的类型。
我认为这是使用静态属性的值类型和字符串是一个好主意,但不适用于用户定义的类,因为你不希望在每个属性的访问分配一个新的实例。
我用这个在我的定点类型是这样的:
public struct FixedPoint
{
private int raw;
private const fracDigits=16;
private FixedPoint(int raw)
{
this.raw=raw;
}
public static FixedPoint Zero{get{return new FixedPoint();}}
public static FixedPoint One{get{return new FixedPoint(1<<fracDigits);}}
public static FixedPoint MaxValue{get{return new FixedPoint(int.MaxValue);}}
}
这是书太多了,博客讨论的行为,所以它事实上不是:) – 2010-12-10 23:56:54
@Lex让人吃惊:奇怪的是,我我以前从未讨论过它。虽然我仍然怀疑*为什么*。 – 2010-12-10 23:59:47
我仍然没有得到将它烘烤成使用组件的优点。 – CodesInChaos 2010-12-11 10:50:00