2016-07-07 7 views
0

Ich habe die folgende Methode:Überprüfung Probleme für null in C#

void setTexts() 
{ 
    if (queueIn != null) 
    { 
     queueIn.text = countIn.ToString(); 
    } 

    if (queueOut != null) 
    { 
     queueOut.text = waitingForPickup.ToString(); 
    } 
} 

Ich will es nichts tun, wenn queueIn null ist, aber ich halte eine NULL-Verweis Ausnahme immer sagen queueIn null ist. Warum geht es in den if-Block, wenn queueIn null ist?

BEARBEITEN: das Problem verschwand, als ich eine Debug.Log Prüfung hinzufügte, also hatte es wahrscheinlich das vorherige dutzendmal oder so etwas nicht gespeichert. Danke für deine Vorschläge! Ich bin ziemlich neu in C#.

+2

Meine Vermutung ist, dass Ihre 'NullReferenceException' von' countIn' kommt. Sie überprüfen das nicht. –

+0

Sind Sie sicher, dass es Fehler in Zeile 3 gibt? Ruft wartendFürPickup call queueIn auf? Seid ihr sicher, dass queueIn die Nullreferenz ist? – Dispersia

+3

Hier lernen Breakpoints und Stepping zu einer unschätzbaren Fähigkeit. Erfahren Sie, wie Sie Fehler beheben können, und diese Art dummer Probleme werden zu Nicht-Problemen. – Thebluefish

Antwort

1

Sie müssen alle Objektdifferenzpunkte überprüfen. In diesem Fall könnte countIn Ihr Täter sein.

Hier ist eine mögliche Lösung, um Ihre Ausnahme zu entfernen.

void setTexts(){ 
    if (queueIn != null && countIn != null) { 
     queueIn.text = countIn.ToString(); 
    } 
    if (queueOut != null && waitingForPickup != null){ 
     queueOut.text = waitingForPickup.ToString(); 
    } 
} 
+0

Was ist, wenn countIn und wartingForPickup primitive Typen sind (neben String/char)? Er sagt queueIn ist null, nicht countIn noch waitingForPickup. Dies ist keine Antwort. – Dispersia

+0

@Dispersia Ich stimme nicht zu. Der einzige mögliche Weg, zu dem eine NullReferenceException in seinem Code auftreten könnte, wäre, wenn countId ein Referenztyp wäre, also glaube ich, dass es eine sichere Annahme ist. Ich glaube auch, dass die Op falsch gesagt hat, dass queueIn null ist, denn wenn das wirklich der Fall wäre, gäbe es keine NullReferenceException, weil grundlegende If-Bedingungen nicht so ausfallen. Die Frage selbst weist auf einen Anfänger-Programmierer hin, daher glaube ich, dass er in seinen Annahmen falsch ist. –

+0

countIn ist ein int, den ich in der Funktion setTexts gesetzt habe. Monodevelop hat mir gesagt, dass es queueIn ist, das war null. –

0

Sie rufen ToString() auf countIn und waitingForPickup - Sie brauchen, um sie zu überprüfen. Zum Beispiel:

void setTexts(){ 
    if (queueIn != null && countIn != null) { 
     queueIn.text = countIn.ToString(); 
    } 
    if (queueOut != null && waitingForPickup != null) { 
     queueOut.text = waitingForPickup.ToString(); 
    } 
} 
Verwandte Themen