2011-02-02 12 views
4

私は非常にシンプルなC#の質問を持っています:空の文字列を扱うとき、次の文は同じではありませんか?ヌル合体演算子は空の文字列に一致しますか?

s ?? "default"; 

または

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

私は思う:私が本当にしたいことは秒であるときstring.Empty!=nullいるので、合体演算子は、空の値に最初の文の結果を設定することがあります。文字列は多少特殊なので(==と!=は値を比較するためにオーバーロードされています)、C#の専門家に確認してもらいたいと思っています。

ありがとうございます。

答えて

15

はい、あなたは正しいです - 彼らは同じではなく、あなたが指定した方法ではありません。その後、あなただけ書くことができます

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

:あなたが最初のフォームに満足していない場合は

、あなたはの拡張を書くことができ

s.DefaultIfNullOrEmpty("default") 

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

+0

+1の拡張子:D –

関連する問題