web-dev-qa-db-fra.com

Meilleure façon de vérifier les chaînes vides en C #

Quel est le meilleur moyen de vérifier les chaînes vides (je ne suis pas demander l'initialisation! ) en C # lorsqu'on considère performance du code ? (voir le code ci-dessous)

string a;

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


if(a == string.Empty)

ou

if(string.IsNullOrEmpty(a))

ou

if(a == "")

toute aide serait appréciée. :)

52
Allan Chua

Ne compare pas les chaînes à String.Empty ou "" pour vérifier les chaînes vides.

Au lieu de cela, comparez en utilisant String.Length == 0

La différence entre string.Empty et "" est très petit. String.Empty ne créera aucun objet tant que "" créera un nouvel objet dans la mémoire pour la vérification. Par conséquent, string.empty est préférable pour la gestion de la mémoire. Mais la comparaison avec string.Length == 0 sera encore plus rapide et le meilleur moyen de vérifier la chaîne vide.

89
Yogesh

Je pense que le meilleur moyen est if(string.IsNullOrEmpty(a)) car c'est plus rapide et plus sûr que les autres méthodes.

34
Gregory Nozik
string.IsNullOrEmpty(a)

il va vérifier à la fois NULL || VIDE

c'est la mise en œuvre:

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

Vous pouvez aussi utiliser longueur

string input = "";

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

    }
}  

Créez une méthode d'extension pour une vérification complète:

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

Désolé, pas de bon code, corrigé. Maintenant, ceci vous dira si la chaîne est vide ou si elle est vide après le rognage.

2
Karel Frajták

Une arrivée tardive:

if a == ""

donnera lieu à l'avertissement d'analyse de code CA1820, vous ne devriez donc absolument pas le faire. Pour une analyse complète, voir CA1820: Test des chaînes vides à l'aide de la longueur de chaîne

1
Dave

La valeur String.Empty sera déchiffrée au moment de l'exécution mais "" de l'autre côté, la valeur est connue au moment de la compilation.

C'est la seule différence entre ces deux.

Mais pour en revenir à la meilleure pratique, si demain, M $ décide que la valeur de chaîne vide doit être utilisée comme "" au lieu de "" pour une raison quelconque, votre code doit alors être modifié à tout endroit. Donc, dans ce cas, il vaut mieux utiliser String.Empty.

C'est la même pratique que celle utilisée avec Path.Combine.

0
Zenwalker