为什么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 这样的静态分析工具已经发出了警告。
class ReferenceTest {
public static string Status {
get {
return Status;
}
}
public static void Main() {
System.Console.WriteLine(Status);
}
}
有什么理由不在编译时捕获这个循环吗?
只是缺少启发式方法。您可能会在 getter 中实现更复杂的逻辑,这将太复杂而无法在编译时进行分析。 但是像 ReSharper 这样的静态分析工具已经发出了警告。