【发布时间】:2013-05-23 09:42:56
【问题描述】:
是否可以绕过以下限制:
在类中创建一个静态只读数组:
public class A
{
public static readonly int[] Months = new int[] { 1, 2, 3};
}
然后将其作为参数传递给属性:
public class FooAttribute : Attribute
{
public int[] Nums { get; set; }
FooAttribute()
{
}
}
--- 假设 Box 是 A 类的属性 ---
[Foo(Nums = A.Months)]
public string Box { get; set; }
我知道这不会编译并且会导致这个错误:
"属性参数必须是常量表达式,typeof 属性参数的表达式或数组创建表达式 类型”。
是否有可能以某种方式解决这个问题以便能够使用静态数组? 我问是因为这在维护方面会更方便,因为我有很多属性。
提前致谢。
【问题讨论】:
-
在概念上“readonly”应该是“const”吗?
-
也许,但他们是different:readonly 关键字与 const 关键字不同。 const 字段只能在字段声明时进行初始化。只读字段可以在声明或构造函数中初始化。因此,只读字段可以根据使用的构造函数具有不同的值。
标签: c# static attributes