質問

値がnullであるか空であるかを「#」ではなくC#でチェックすることは可能ですか?しかし、 String.Empty ?私はこれができることを知っています:

switch (text)
{
    case null:
    case "":
        break;
}

IFステートメントの大きなリストを持ちたくないので、もっと良いものはありますか?

置き換えようとしています:

if (String.IsNullOrEmpty(text))
    blah;
else if (text = "hi")
    blah
役に立ちましたか?

解決

次のようなものを提案します。

switch(text ?? String.Empty)
{
    case "":
        break;
    case "hi":
        break;
}

それはあなたが探しているものですか?

他のヒント

switch ステートメントの例の何が問題になっていますか?

switch (text)
{
    case null:
    case "":
        foo();
        break;
    case "hi":
        bar();
        break;
}

それは機能し(何らかの理由で驚いた- null の場合に文句を言うかクラッシュするだろうと思った)、それは明らかである。

その点で、なぜ String.Empty が心配なのですか?ここに何かがありません。

方法

if (string.isNullOrEmpty(text))
{
   //blah
}
else
{
 switch (text)
 {
     case "hi":
 }

}

ドキュメントからof String.Empty

  

このフィールドの値は   長さゼロの文字列""。

これは、"" String.Empty の間に違いがないことを意味すると解釈します。なぜそれらを区別しようとしていますか?

空の文字列は""で、String.Emptyと同じです。 を置くことができる理由"" caseステートメントではなく、" String.Empty" 「空」というのはクラスのフィールドです" String"および""実際には定数値です。

定数値はケースで許可されます。String.Emptyはフィールドであり、実行時に変更できます。 (この場合、同じままですが、各クラスのすべての静的フィールドが定数値ではありません。)

'if'の場合、その条件は実行時に評価され、ifは定数値を必要としないない

これが理由を説明することを願っています。

気づいたのは、 if / elseステートメントとswitchステートメントを組み合わせることができるということです!前提条件を確認する必要がある場合に非常に便利です。

if (string.IsNullOrEmpty(text))
{
    //blah
}
else switch (text)
{
    case "hi":
        Console.WriteLine("How about a nice game of chess?");
        break;
    default:
        break;
}
string StrMode;
if (!string.IsNullOrEmpty(StrMode))
{  
    switch (StrMode.Trim())
    {
        case "Souse":
        {
             //Statement Eg:  
             MesssageBox.Show("Souse");
             break;
        }

        case "Company Agent":
        {
             //Statement Eg:
             MesssageBox.Show("Souse");
             break; 
        }

        default:
             return;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top