Ho il seguente codice che fa non produce un avviso CA1804 (la variabile dichiarata non viene mai utilizzata) dall'analisi del codice (VS2010 Premium):L'analisi del codice non mostra l'avviso CA1804 nonostante la variabile di stringa locale non utilizzata in C# (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);
}
...
Quando rimuovo il ErrorProvider.SetError (...) linee, viene visualizzato l'avviso CA1804, ma perché non è questo il caso nel codice di esempio di cui sopra?
(Btw: il codice in sé non è troppo grande e solo scopo di illustrare la mia domanda.)
Tutte le idee che potrebbero causare questo comportamento? Immagino che questo potrebbe essere dovuto al fatto che il codice IL è ottimizzato in modo tale da mettere la dichiarazione al di fuori dello se, che a sua volta significherebbe che l'avviso non dovrebbe apparire in un esempio come quello sopra, ma Non sono sicuro se sia vero.
Grazie in anticipo
G.
Probabilmente sposta 'error errorText = ...' al di fuori di 'if' e non riesce a notare la differenza tra le due variabili ugualmente nominate. Continua a fallire quando cambi il primo 'errorText' in' errorText2'? – Polynomial