如果我没记错的话,它是 C# 语言设计的一部分。const
保留用于可以在编译时推断其内容的项目,即在程序甚至构建然后运行之前(期间)。C# 中的所有数组都是运行时数组(它们的长度是在程序运行时确定的,而不是在那之前),因此它们不能被制成const
字段。我觉得这是 C# 的一个限制,但这就是他们决定这样做的方式。
引用类型可以为 null 的原因是它null
是一个常量值,而您的初始化程序(在运行时生成)不是。null
内置于语言中,因此通过该逻辑,它的值始终是已知的(因此,可用于编译时引用类型)。
编辑:
但是,您应该能够创建一个静态表,该表将在任何其他代码使用或需要它时被初始化:
public static int[,] i = { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 } };
^ Static Keyword
您可以像访问它(如果它仍在class A
):
A.i[0, 1]
我希望这可以帮助你
要了解更多信息,请查看 MSDN: http: //msdn.microsoft.com/query/dev11.query?appId=Dev11IDEF1&l=EN-US&k=k(CS0134);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5) &rd=真
编辑编辑:如果您需要将静态表铆接到代码上,并且在初始化后永远不要让任何人更改它,则有用于此readonly
目的的关键字:
public static readonly int[,] i = { { 1, 2, 3 }, { 1, 2, 3 }, { 1, 2, 3 } };
^ Static ^Readonly Keywords
请记住,它不会阻止您将事物重新分配到这些插槽中,但它与 C# 所能提供的一样固定,除了每次都创建一个属性或返回一个新数组。