为什么C#编译会出现这个栈溢出错误?

Why does C# compile this stack overflow error?

class ReferenceTest {
    public static string Status {
        get {
            return Status;
        }
    }
    public static void Main() {
        System.Console.WriteLine(Status);
    }
}

有什么理由不在编译时捕获这个循环吗?

只是缺少启发式方法。您可能会在 getter 中实现更复杂的逻辑,这将太复杂而无法在编译时进行分析。 但是像 ReSharper 这样的静态分析工具已经发出了警告。