考虑以下 C# 代码:
using System;
class Program
{
static string string1 = "AAA";
static string string2 = string1 + string3;
static string string3 = "BBB";
static void Main()
{
Console.WriteLine(string2);
}
}
我今天早些时候写了一些这样的代码,并期望string2
包含该值AAABBB
,但它只是包含AAA
。我对静态变量的初始化顺序做了一些阅读,但对我来说,编译期间会产生某种类型的警告或错误似乎更可取。
两个问题:
为什么允许这样的代码编译成功?(如果答案是:“因为这就是 C# 规范的编写方式”,那么为什么要这样写?有什么原因我错过了为什么这并不总是只会引发编译时错误?)
如果我将来无意中再次编写此类代码,有什么方法可以获得编译时警告或其他类型的标志?