类的静态成员上的奇怪行为 - 这怎么可能
本文关键字:怎么可能 静态成员 | 更新日期: 2023-09-27 17:57:10
考虑以下类:
public class MyClass
{
public static string[] SomeAmazingConsts = { Const1 };
public static string Const1 = "Constant 1";
public static string Const2 = "Constant 2";
}
现在,查看用法:
class Program
{
static void Main(string[] args)
{
string[] s = MyClass.SomeAmazingConsts;
//s[0] == null
}
}
问题是 s[0] == 空!这到底是怎么回事?现在,对 MyClass 的静态变量进行重新排序,如下所示:
public class MyClass
{
public static string Const1 = "Constant 1";
public static string Const2 = "Constant 2";
public static string[] SomeAmazingConsts = { Const1 };
}
事情开始正常运转。任何人都可以对此有所了解吗?
从 10.4.5.1 静态字段初始化
类的静态字段变量初始值设定项对应于 按文本顺序执行的赋值顺序 它们出现在类声明中。
因此,初始化从上到下发生,在第一种情况下Const1
尚未初始化,因此null