web-dev-qa-db-ja.com

If文字列がnullまたは空でない場合のライナー

私は通常、アプリケーション全体でさまざまな理由でこのようなものを使用します:

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

頻繁に使用する場合は、目的の文字列を返すメソッドを作成します。例えば:

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

次のように使用します:

FooTextBox.Text = NonBlankValueOf(strFoo);

私にとってこれを行うC#の一部である何かがあるのか​​といつも思っていました。次のように呼び出すことができるもの:

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

String.IsNullOrEmpty(strFoo) == trueの場合、戻り値である2番目のパラメーター

そうでない場合、誰かが使用するより良いアプローチがありますか?

62
user2140261

Null合体演算子(??)がありますが、空の文字列は処理しません。

Null文字列の処理のみに関心がある場合は、次のように使用します。

string output = somePossiblyNullString ?? "0";

特に必要な場合は、値を設定または返すif/elseステートメントブロックを単純に使用できる条件演算子bool expr ? true_value : false_valueがあります。

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

三項演算子 を使用できます。

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

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

独自の Extension String型のメソッド:-

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

これで、任意の文字列タイプで使用できます

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

これは役立つかもしれません:

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

古い質問ですが、私はこれを手伝うために追加すると思いました、

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