it-swarm.com.de

Empfehlenswerteste Methode zum Überprüfen leerer Zeichenfolgen in C #

Was ist der beste Weg, um leere Zeichenketten zu prüfen (ich frage nicht nach der Initialisierung! ) in C # bei der Betrachtung der Codeleistung ? (Siehe Code unten)

string a;

// some code here.......


if(a == string.Empty)

oder

if(string.IsNullOrEmpty(a))

oder

if(a == "")

jede Hilfe wäre dankbar. :)

52
Allan Chua

Vergleiche Strings nicht mit String.Empty oder "", um nach leeren Zeichenfolgen zu suchen.

Vergleichen Sie stattdessen mit String.Length == 0

Der Unterschied zwischen string.Empty und "" ist sehr klein. String.Empty erstellt kein Objekt, während "" legt zur Überprüfung ein neues Objekt im Speicher an. Daher ist string.empty in der Speicherverwaltung besser. Aber der Vergleich mit string.Length == 0 ist noch schneller und der bessere Weg, nach einer leeren Zeichenfolge zu suchen.

89
Yogesh

Ich denke, der beste Weg ist if(string.IsNullOrEmpty(a)), weil es schneller und sicherer ist als die anderen Methoden.

34
Gregory Nozik
string.IsNullOrEmpty(a)

es werden beide NULL || geprüft LEEREN

dies ist die Implementierung:

public static bool IsNullOrEmpty(string value)
{
    if (value != null)
    {
        return (value.Length == 0);
    }
    return true;
}
17
Royi Namir

Sie können auch Länge verwenden

string input = "";

if (input != null)
{
    if (input.Length == 0)
    {

    }
}  

Erstellen Sie eine Erweiterungsmethode für die vollständige Prüfung:

public static bool IsEmpty(this string s)
{
  if(s == null) return true;
  return string.IsNullOrEmpty(s.Trim()); // originally only (s)
}

Entschuldigung, kein guter Code, behoben. Jetzt erfahren Sie, ob die Zeichenfolge leer ist oder ob sie nach dem Zuschneiden leer ist.

2
Karel Frajták

Eine späte Ankunft:

if a == ""

wird die Warnung CA1820 zur Codeanalyse auslösen, daher sollten Sie dies auf keinen Fall tun. Eine vollständige Analyse finden Sie unter CA1820: Test auf leere Zeichenfolgen mithilfe der Zeichenfolgenlänge

1
Dave

String. Leerer Wert wird nur zur Laufzeit "" entschlüsselt, der Wert ist jedoch zur Kompilierzeit selbst bekannt.

Das ist der einzige Unterschied zwischen diesen beiden.

Aber wenn M $ morgen aus irgendeinem Grund beschließt, den leeren Zeichenfolgenwert als '' anstelle von "" zu verwenden, muss Ihr Code überall geändert werden. In diesem Fall ist es am besten, String.Empty zu verwenden.

Es ist die gleiche Vorgehensweise wie bei Path.Combine.

0
Zenwalker