web-dev-qa-db-fra.com

Une doublure pour Si la chaîne n'est pas nulle ou vide

J'utilise habituellement quelque chose comme ceci pour diverses raisons tout au long d'une application:

if (String.IsNullOrEmpty(strFoo))
{
     FooTextBox.Text = "0";
}
else
{
     FooTextBox.Text = strFoo;
}

Si je l'utilise beaucoup, je vais créer une méthode qui renvoie la chaîne souhaitée. Par exemple:

public string NonBlankValueOf(string strTestString)
{
    if (String.IsNullOrEmpty(strTestString))
        return "0";
    else
        return strTestString;
}

et l'utiliser comme:

FooTextBox.Text = NonBlankValueOf(strFoo);

Je me suis toujours demandé s'il y avait quelque chose qui faisait partie de C # qui ferait cela pour moi. Quelque chose qui pourrait s'appeler comme:

FooTextBox.Text = String.IsNullOrEmpty(strFoo,"0")

le second paramètre étant la valeur retournée si String.IsNullOrEmpty(strFoo) == true

Sinon, est-ce que quelqu'un a de meilleures approches qu'il utilise?

62
user2140261

Il existe un opérateur de coalescence nul (??), mais il ne gérerait pas les chaînes vides.

Si vous vouliez seulement traiter avec des chaînes vides, vous l'utiliseriez comme ceci:

string output = somePossiblyNullString ?? "0";

Pour votre besoin spécifique, il y a simplement l'opérateur conditionnel bool expr ? true_value : false_value que vous pouvez utiliser pour simplement si/else l’instruction bloque ou définit une valeur.

string output = string.IsNullOrEmpty(someString) ? "0" : someString;
126
Anthony Pegram

Vous pouvez utiliser le opérateur ternaire :

return string.IsNullOrEmpty(strTestString) ? "0" : strTestString

FooTextBox.Text = string.IsNullOrEmpty(strFoo) ? "0" : strFoo;
13
Jim Mischel

Vous pouvez écrire votre propre Extension méthode pour le type String: -

 public static string NonBlankValueOf(this string source)
 {
    return (string.IsNullOrEmpty(source)) ? "0" : source;
 }

Maintenant, vous pouvez l'utiliser comme avec n'importe quel type de chaîne

FooTextBox.Text = strFoo.NonBlankValueOf();
8
ssilas777

Cela peut aider:

public string NonBlankValueOf(string strTestString)
{
    return String.IsNullOrEmpty(strTestString)? "0": strTestString;
}
7

Vieille question, mais je pensais que j'ajouterais ceci pour aider,

#if DOTNET35
bool isTrulyEmpty = String.IsNullOrEmpty(s) || s.Trim().Length == 0;
#else
bool isTrulyEmpty = String.IsNullOrWhiteSpace(s) ;
#endif
0
dathompson