【发布时间】:2013-01-09 19:19:54
【问题描述】:
谁能解释为什么我不能在 C# 属性中使用 const Int32?
例子:
private const Int32 testValue = 123;
[Description("Test: " + testValue)]
public string Test { get; set; }
让编译器说:
"属性参数必须是常量表达式,..."
为什么?
【问题讨论】:
-
大概是执行顺序吧。您定义的 int 在属性运行时可能不会被实例化。
-
如果允许表达式,它应该在编译类型时计算。如您所知,C# 编译器不支持它。
-
@AlexanderBalte:实际上,编译器可以在编译时计算表达式。