private static string Test = a ? "test" : "hello";
private static bool a = Test == "test";
这些似乎相互依赖,但在编译时变成了一个假的“Test =”你好“无论顺序如何。我认为这与布尔设置为假有关,但如果有人可以解释如何这编译会很好。
答案 0 :(得分:4)
基于C#语言规范:
类的静态字段变量初始值设定项对应于a 以文本顺序执行的分配顺序 它们出现在课堂宣言中。
private static string Test = a ? "test" : "hello"; // a is false - default for bool
现在Test引用字符串“hello”
private static bool a = Test == "test"; // a remains false as Test != "test"
答案 1 :(得分:0)
这是编译因为所有名称在范围内都可见。它会产生您遇到的结果,因为变量的默认初始化为0和执行顺序。