Was ist die optimale Methode um zu überprüfen, ob eine Zeichenfolge leer ist?

8

Um zu überprüfen, ob eine Zeichenfolge leer ist, verwende ich

%Vor%
  1. Alle obigen Anweisungen erzeugen die gleiche Ausgabe. Was ist die optimale Methode, die ich verwenden sollte?

    %Vor%
  2. Auch hier machen beide Aussagen dasselbe. Was ist die beste Methode zu verwenden?

Ich habe versucht, zu debuggen und die Leistung einer C # -Anweisung zu vergleichen?

    
now he who must not be named. 07.11.2012, 09:08
quelle

4 Antworten

10

Zunächst geben die 4 Statements nicht an allen Eingängen die gleiche Ausgabe aus. Versuche Null und die ersten 3 werden eine Ausnahme auslösen. Und versuchen Sie mit Leerzeichen, die letzte wird Ihnen ein fehlerhaftes Ergebnis geben. Du musst also wirklich darüber nachdenken, was du willst. Der beste Weg zu gehen sind normalerweise die:

%Vor%

Nur wenn Sie dies ein paar Millionen Mal tun, sollten Sie einen Blick darauf werfen, wie Sie Ihren Code weiter optimieren können.

Hier ein paar Testergebnisse, aber das kann bei jeder .net-Version anders sein:

Testergebnisse für 100 Millionen Iterationen:

%Vor%

Quelle

    
Peter 07.11.2012, 09:19
quelle
3

Ich würde für String.IsNullOrWhiteSpace oder String.IsNullOrEmpty gehen.

Length , Count und Any können fehlschlagen, wenn test ist null mit object null reference ]

Aktualisieren

Wenn Sie nicht sicher sind, dass Ihre Zeichenfolge nicht null ist, müssen Sie überprüfen, ob die Zeichenfolge null ist, bevor Sie die Länge testen oder eine Methode für die Variable zählen oder aufrufen.

In diesem Szenario ist .Length nicht identisch mit String.IsNullOrWhiteSpace

%Vor%     
codingbiz 07.11.2012 09:18
quelle
1

Soweit mir bekannt ist:

.Any() : hat die Absicht zu prüfen, ob irgendwelche Objekte in einem Array existieren. Und da string ein Array von char ist, funktioniert das. Und ist ein Teil von Linq

.Length : hat die Absicht, Ihnen die Länge des char-Arrays zu geben.

Also, ja das gleiche Verhalten, aber etwas andere Absichten.

Übrigens sollten Sie String.IsNullOrWhitespace wirklich verwenden, um Strings als leer zu prüfen. Zumindest ist das meine Präferenz, so dass Sie, wenn Sie eine Zeichenfolge aus vielen Leerzeichen haben, nicht zuerst trimmen müssen.

    
Davin Tryon 07.11.2012 09:12
quelle
1

Für eine Variable sind die Ergebnisse:

  1. String.IsNullOrEmpty(test) & lt; String.IsNullOrWhiteSpace(test) & lt; & lt; test.Length==0 & lt; & lt; & lt; !(test.Any())test.Count() == 0
  2. test.ToString(CultureInfo.InvariantCulture) & lt; Convert.ToString(test) (10-fache Bestellung)

Ich habe das folgende Code-Snippet verwendet, um das obige zu testen.

%Vor%

Infact String.IsNullOrEmpty(test) ist das Beste, was jemand in den Kommentaren oben gesagt hat ...:)

    
Viral Jain 07.11.2012 09:32
quelle

Tags und Links