String.IsNullOrEmptyを使用したC#スイッチ
-
08-07-2019 - |
質問
値が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;
}
}