为什么 Visual Studio 不警告静态字符串的循环初始化?

Why doesn't Visual Studio warn about a circular initialisation of a static string?

当我用静态字符串替换字符串文字时,出现了一个愚蠢但可能并不少见的错误,它导致了类似于以下代码片段的错误,这可能几乎从来没有打算过,而且很容易被发现,即使对于机器来说也是如此:

public partial class T { static string S = S; }

这不会触发 VS Professional 2013、.NET Framework 4.6.0.1055、警告级别 4 的诊断。1 为什么不呢?


1为了对编译器公平,我假设初始化定义明确,并在显式初始化之前为其自身分配默认值状态的 S' 值,即 null最终执行初始化时;但这几乎可以肯定是编码错误。

在 Visual Studio 的最新版本中它说:

Warning CS1717 Assignment made to same variable; did you mean to assign something else?

所以...更新您的 IDE :)