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?
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;
Vous pouvez utiliser le opérateur ternaire :
return string.IsNullOrEmpty(strTestString) ? "0" : strTestString
FooTextBox.Text = string.IsNullOrEmpty(strFoo) ? "0" : strFoo;
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();
Cela peut aider:
public string NonBlankValueOf(string strTestString)
{
return String.IsNullOrEmpty(strTestString)? "0": strTestString;
}
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