Frage

ich mich ständig ähnlichen Code wie im folgenden Beispiel finden das Schreiben

if (object["Object Name"] != null) {
    if (object["Object Name"] == "Some Value") {
        // Do Statement A
    } else {
        // Do Statement B
    }
} else {
    // Do Statement B
}

Das Problem hier ist, dass ich viel überprüfen, ob ein Objekt null ist oder nicht, und dann kann ich es überprüft es tatsächlichen Inhalt ist.

"Statement B" ist immer gleich und in meinem Fall ist in der Regel eine SQL-Anweisung.

Es muss ein besserer Weg, um dies sein?

Danke
Stephen

War es hilfreich?

Lösung

Es gibt Kurzschlüsse in C #, so dass Sie tun können:

if(null != object && object.name == foo)
  do A
else
  do B

C # wertet immer den ersten Ausdruck in der bedingten Anweisung zuerst und wenn das fehlschlägt, ist es nichts anderes in diesem Teil der Aussage versuchen.

Um diesen Punkt zu fördern, wenn Sie zusammen mit einer oder mehrer kostengünstigen Operationen eine teure Operation in der Bedingungsanweisung gehen zu müssen, ist es gut, es am Ende, wenn möglich zu setzen, so dass es nur die teure Operation überprüfen, wenn es wirklich muss. So etwas wie

if(trivial comparison && trivial comparison && REALLY EXPENSIVE OPERATION)

Es wird nun nur ausführen, die teure Operation als letztes Mittel.

Andere Tipps

Da C # funktioniert Kurzschlüssen, ja. Versuchen Sie folgendes:

if (object["Object Name"] != null && object["Object Name"] == "Some Value") 
{
    // Do Statement A
} 
else 
{
    // Do Statement B
}

Ich denke, Umschreiben den if-then-else dazu wird es schöner aussehen, weil die einzigen B-Anweisung.

if ((object["Object Name"] != null) && (object["Object Name"] == "Some Value")) 
{
    // Do Statement A
} 
else 
{
    // Do Statement B
}

Warum das überprüfen? Sicherlich würde dies ausreichen:

if(object["Object Name"] == "Some Value") {
    // Do statement A
} else {
    // Do statement B
}

ich irgendwie sehen, was Sie bekommen bei mit null Kontrolle, aber das spezielle Beispiel Sie geben es nicht erforderlich ist.

EDIT: Nun, wenn Sie hatte geschrieben das statt:

if (object != null) {
    if (object["Object Name"] == "Some Value") {
        // Do Statement A
    } else {
        // Do Statement B
    }
} else {
    // Do Statement B
}

dann wäre die Lösung:

if(object != null && object["Object Name"] == "Some Value") {
    // Do Statement A
} else {
    // Do Statement B
}

HAFTUNGSAUSSCHLUSS:. Nicht die allgemeine Kurzschluss-Methode zu tun

Nun, könnten Sie eine eigene Funktion erstellen Sie die Suche durchzuführen, vor allem, wenn die Abfrage gleich bleibt. So etwas wie folgt aus: (Pseudo-Code incoming)

private bool IsNullCheck(string objectName)
{
  if (object["Object Name"] != null)
     return false;
  else
     // statement B
}

if (!IsNullCheck("Object Name") && if(object["Object name"] == "Value") {
   // stuffs

} 
else 
{
        // Do Statement B
}

oder dergleichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top