5

非常に単純な C# の質問があります。空の文字列を処理する場合、次のステートメントは同じではありませんか?

s ?? "default";

また

(!string.IsNullOrEmpty(s)) ? s : "default";

私が思うにstring.Empty!=null、合体演算子は、私が本当に欲しいのは2番目のステートメントであるときに、最初のステートメントの結果を空の値に設定する可能性があるからです。文字列はどこか特殊なので (== と != は値比較のためにオーバーロードされます)、C# の専門家に確認してもらいたいと思いました。

ありがとうございました。

4

1 に答える 1

15

はい、その通りです。それらは同じではなく、指定した方法でも異なります。

最初の形式に満足できない場合は、次の拡張を記述できます。

public static string DefaultIfNullOrEmpty(this string x, string defaultValue)
{
    return string.IsNullOrEmpty(x) ? defaultValue : x;
}

次に、次のように書くことができます。

s.DefaultIfNullOrEmpty("default")

あなたのメインコードで。

于 2011-02-02T01:49:18.747 に答える