Frage

Ist es möglich, einen Schalter in C # zu haben, die überprüft, ob der Wert null oder leer ist nicht „“, sondern String.Empty? Ich weiß, ich kann dies tun:

switch (text)
{
    case null:
    case "":
        break;
}

Gibt es etwas besser, denn ich will nicht eine große Liste von IF-Anweisungen haben?

I'mm zu ersetzen versuchen:

if (String.IsNullOrEmpty(text))
    blah;
else if (text = "hi")
    blah
War es hilfreich?

Lösung

Ich würde so etwas wie die folgenden Vorschlag:

switch(text ?? String.Empty)
{
    case "":
        break;
    case "hi":
        break;
}

Ist das, was Sie suchen?

Andere Tipps

Was ist mit Ihrem Beispiel switch Aussage falsch ist?

switch (text)
{
    case null:
    case "":
        foo();
        break;
    case "hi":
        bar();
        break;
}

Es funktioniert (und aus irgendeinem Grund, der mich überrascht - ich dachte, es auf dem null Fall beschweren oder abstürzen würde) und es ist klar,

.

Für diese Angelegenheit, warum sind Sie besorgt über String.Empty? Ich bin etwas fehlt hier.

, wie etwa

if (string.isNullOrEmpty(text))
{
   //blah
}
else
{
 switch (text)
 {
     case "hi":
 }

}

Aus der Dokumentation von String.Empty:

  

Der Wert dieses Feldes ist die   Zeichenfolge der Länge Null "".

ich das interpretieren, dass es keinen Unterschied zwischen "" und String.Empty ist. Warum versuchen Sie, zwischen ihnen zu unterscheiden?

Eine leere Zeichenfolge „“ einstellen, die String.Empty gleich ist. Der Grund, dass Sie können put „“ in einem Fall Aussage aber nicht „String.Empty“ ist, dass „Empty“ ist ein Feld der Klasse „String“ und „“ ist eigentlich ein contant Wert.

Konstante Werte werden in den Fällen erlaubt, ist String.Empty ein Feld und könnte zur Laufzeit geändert werden. (In diesem Fall wird es gleich bleiben, aber nicht alle statischen Felder jeder Klasse sind konstante Werte.)

Im Fall von ‚wenn‘, dass diese Bedingung zur Laufzeit ausgewertet wird und wenn tut nicht erfordert einen konstanten Wert.

Ich hoffe, das erklärt, warum.

Etwas, das ich gerade bemerkt, dass Sie kombinieren if / else und switch-Anweisungen! Sehr nützlich, wenn benötigen Voraussetzungen zu überprüfen.

if (string.IsNullOrEmpty(text))
{
    //blah
}
else switch (text)
{
    case "hi":
        Console.WriteLine("How about a nice game of chess?");
        break;
    default:
        break;
}
string StrMode;
if (!string.IsNullOrEmpty(StrMode))
{  
    switch (StrMode.Trim())
    {
        case "Souse":
        {
             //Statement Eg:  
             MesssageBox.Show("Souse");
             break;
        }

        case "Company Agent":
        {
             //Statement Eg:
             MesssageBox.Show("Souse");
             break; 
        }

        default:
             return;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top