У меня есть следующий код, который не выдает предупреждение CA1804 (объявленная переменная никогда не используется) из анализа кода (VS2010 Premium):
...
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 оптимизирован таким образом, что объявление выходит за пределы , если , что, в свою очередь, означает, что предупреждение действительно не должно отображаться в примере, подобном один выше, но я не уверен, правда ли это.
Заранее спасибо
G.