2016-04-26 62 views
4

当我用静态字符串替换字符串文字时,一个愚蠢但可能并不罕见的错误导致类似下面的代码片段,即使对于一台机器也可能几乎从不打算和微不足道:为什么Visual Studio不提示静态字符串的循环初始化?

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

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


要公平与编译器我假定初始化明确界定,并在它的默认值状态之前明确初始化,即空,给自己指定 S'值时,最终执行初始化;但它几乎肯定是编码错误。

+0

@eh当前编译器*不*知道更好,所以没有必要的。 –

回答

6

在最近版本的Visual Studio中,它说:

警告CS1717分配到同一个变量作出;你的意思是分配别的东西吗?

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

+0

Marc,我很抱歉 - 我现在不能用我的版本重现我的场景,并且获得与VS2013一样的警告。我不想撤消所有的改变,所以我不能说它们有什么不同。有一个小的但非零的可能性,我分配了一个类似但不同的静态变量。 –