2010-03-23 16 views
5

Ich habe an der Uni in JAVA und C all die Jahre die Programmierung, aber jetzt lerne ich C# und eine kleine Anwendung erstellen, und ich habe mit diesem gefundenen Probleme:Conditional oder in C#

if (taxonType.Equals(null) ¦¦ taxonID == -1) 

Ich bekomme eine rote Unterstreichung für diese Bedingung, und ich weiß nicht wirklich warum, denn nach dem, was ich gesehen habe, sollte das in Ordnung sein, aber das ist es nicht. Gibt es etwas, das mir fehlt?

danke allen im Voraus, Victor


Vielen Dank !!! Ich wurde wütend darüber. Die Sache ist, dass ich Spanisch bin und ich bin gewohnt, den Rohrschlüssel | zu haben genau an der gleichen Stelle, wo | in der amerikanischen Konfiguration ... ich sah dies | seltsam, aber ich dachte, es war das gleiche ...

Danke für die schnelle Antwort !! Victor

+0

genaue Fehler Was bekommen Sie mit dem "red Unterstrichen" beschreibt? – Marek

Antwort

11
if (taxonType == null || taxonID == -1) 

für den korrekten Code geändert sowie die Frage zu beantworten, fragte

+2

Wie schon in anderen Antworten gesagt, wenn taxonType tatsächlich eine Nullreferenz ist, wird Ihr Test ... – Seb

+1

Code aktualisiert, war ursprünglich die Beantwortung der Frage gefragt, anstatt den Rest des Codes zu beheben.Wenn er die Bewerbung abschickt, kann ich das auch beenden;) – rrrr

4

Ich weiß nicht, welche Arten von taxonType und taxonID aber es sollte wie folgt funktionieren:

if (taxonType == null || taxonID == -1) 
5

Was ist '|'? Bist du sicher, dass es das gleiche Zeichen wie '|' ist?

+1

Sollte ein Kommentar sein. –

+1

@Filip manchmal eine Frage liefert eine bessere Antwort als eine langatmige Antwort, vor allem wenn die ursprüngliche Frage so unklar formuliert wurde ("Ich bekomme rote Unterstreichung") – Marek

2

Es sieht aus wie Ihr einige Sonderzeichen verwenden, die nicht als das Standardrohr (|) Zeichen erkannt wird. Vielleicht sollten Sie Ihre Tastatureinstellungen überprüfen?

1

Sie sollten "||" verwenden statt "||".

2

das Problem ist, dass, wenn taxonType wirklich Null ist dann die .Equals-Funktion auf eine Nullreferenceexception werfen würde. gehen mit == statt Equals

2

wenn taxonType null ist eigentlich diese wird eine Ausnahme werfen, weil Sie seine Equals-Methode aufrufen, werden versuchen.

wenn Sie sagte, wenn (taxOnType == null) || taxonID == -1) Dir geht es gut.

1

Ihr Test für Null sollte .Equals nicht verwenden, da der Versuch, auf ein Mitglied zuzugreifen, ein NullReferenceException wirft, wenn das Objekt null ist.

Verwendung:

if (taxonType == null || taxonID == -1) 

Es ist auch nicht klar, ob Sie das Zeichen korrekt Rohr verwenden |, wie Sie als ¦ auftaucht.

+0

Ja, das ist es, ich habe versucht, die Gleichgestellten, weil TaxonType eine Zeichenfolge war, aber meine Der erste Versuch war der Code, den du geschrieben hast. Als ich immer wieder die rote Unterstreichung bekam, probierte ich verschiedene Bedingungen aus, um zu sehen, ob ich es falsch verstanden habe ... Danke :) – vikitor

1

if (String.IsNullOrEmpty (taxonType) || taxonID < 0)

und machen Taxon als STRUCT

+0

String.IsNullOrEmpty ist nur für Strings gedacht. Wir wissen nicht, welcher Typ taxonType ist. Außerdem würde String.IsNullOrEmpty true zurückgeben, wenn taxonType "" ist. Das ist nicht das Verhalten, das wir wollen. Verwenden Sie stattdessen taxonType == null. TaxonID <0 ist nicht ausreichend. –

+0

taxonType ist eine Zeichenfolge, da ich sie zum Erstellen eines Suchformulars verwende, setze ich taxonType auf null, wenn kein TaxonType ausgewählt ist und taxonID -1 ist, wenn keine taxonID im Formular ausgewählt ist ... Es ist nur um den Kontrollfluss umleiten. Vielen Dank für die Ratschläge, es hilft mir, meine Anwendung mit Werkzeugen zu überdenken, die ich vorher nicht kannte oder dachte :) – vikitor