c #: Fehlersuche: if (false)

8

Ich habe gerade einen Fehler in meinem Programm gefunden (nach einigem Debuggen und Haare reißen)

%Vor%

Wie Sie sehen können first ist immer true - nie geändert. Also if(!first) ist im Grunde if(false) .
Der Compiler hat keine Warnung generiert, obwohl er auf Stufe 4 (höchste Stufe) gesetzt ist.

Wie kann ich ähnliche if(false) Fehler finden?

Ich verwende VS 2010, .Net 4.0 Compiler, Projekteinstellung .Net 2.0

    
Simon Ottenhaus 20.04.2011, 13:29
quelle

4 Antworten

13

Mit Resharper erhalten Sie Warnungen wie diese

    
Bala R 20.04.2011, 13:36
quelle
10

Ich kenne keine Compiler-Funktion, die Ihnen hilft - Sie benötigen Unit-Tests.

    
dahlbyk 20.04.2011 13:32
quelle
1

Ich stimme zu, dass Resharper ein gutes Werkzeug zu haben ist, aber ich möchte hinzufügen, dass ich denke, dies zeigt einen Grund, dieses Konstrukt NICHT zu verwenden.

Eine Alternative könnte sein:

BEARBEITEN:

%Vor%

Wir müssen oft eine spezielle Handhabung für das erste Element haben, manchmal ist es besser, die Logik zu ändern und die gesamte Verarbeitung zu vereinheitlichen. Wenn wir das nicht können, dann bevorzuge ich es immer, die Spezialfallbehandlung von den restlichen Elementen klar zu trennen, statt sie zu verschachteln.

    
NightDweller 20.04.2011 14:40
quelle
0

Der Compiler warnt Sie vor offensichtlichen Dingen wie unerreichbarem Code, der auf einem konstanten Wert in der if-Anweisung basiert - z. "wenn (falsch)". Da die Variable jedoch geändert werden kann, wird sie in diesem Fall leider nicht funktionieren.

    
Chris Snowden 20.04.2011 13:41
quelle