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