Jeśli wykonywana jest kompilacja, w której zdefiniowano symbol DEBUG, wówczas kompilator wykonuje analizę statyczną kodu , zakładając, że pierwszy zwrot jest aktywny i nie jest wykluczany. Więc twój kod byłby postrzegany jako:
return thisVariable;
return thatVariable;
W tym kontekście jasne jest drugi return
oświadczenie nie zostanie osiągnięty w takiej kompilacji. Po przełączeniu do konfiguracji kompilacji, w której DEBUG nie jest zdefiniowany, nie powinno być wyświetlane ostrzeżenie.
Należy rozważyć użycie #else
(docs), aby uniknąć drugiej instrukcji return
, gdy zdefiniowano DEBUG.
Jest też to istotne smakołyk z here:
Mimo że kompilator nie ma osobnego preprocesor, że dyrektyw opisane w niniejszym [C# dyrektywy preprocesora] sekcji są przetwarzane tak, jakby były jednym.
Innymi słowy, analiza statyczna kompilatora C# nie jest świadoma dyrektyw preprocesora; zostały już przetworzone w tym momencie, a analiza statyczna widzi tylko kod, który uzyskał z fazy przetwarzania wstępnego.
W jakiej konfiguracji masz program Visual Studio? – Maarten
To zniknie, gdy umieścisz go w wydaniu –
Dodaj #else przed powrotem 2 ° i #endif po –