我有以下代码,它不会产生代码分析(VS2010 Premium)中的CA1804警告(声明的变量未被使用):
...
if( boolVariable )
{
string errorText = "Bla Bla Bla"; // Never used
ErrorProvider.SetError( SomeControl, "Some Warning" );
}
else
{
string errorText = "Acme Acme Acme"; // Used below
ErrorProvider.SetError( SomeControl, errorText );
}
...
当我删除ErrorProvider.SetError( ... )这些行时,会显示CA1804警告,但为什么在上面的代码示例中没有呢?
(顺便说一下:这段代码本身并不是很好,只是用来说明我的问题。)
有什么想法可能会导致这种行为吗?我猜这可能是因为IL代码被优化了,将声明放在if之外,这反过来意味着警告确实不应该出现在像上面那样的示例中,但我不确定这是否正确。
提前感谢。
G.
string errorText = ...
移到if
外部,并且无法注意到两个同名变量之间的区别。当您将第一个errorText
更改为errorText2
时,它是否仍然失败? - Polynomial