ヌルの可能性があるオブジェクトに対してToStringを実行するにはどうすればいいですか? 質問する

ヌルの可能性があるオブジェクトに対してToStringを実行するにはどうすればいいですか? 質問する

以下のことを実行する簡単な方法はありますか?

String s = myObj == null ? "" : myObj.ToString();

次のことはできるとわかっていますが、実際にはハックだと考えています。

String s = "" + myObj;

Convert.ToString() にこれに対する適切なオーバーロードがあれば素晴らしいでしょう。

ベストアンサー1

C# 6.0 編集:

C# 6.0 では、元のメソッドの簡潔でキャストフリーなバージョンを使用できるようになりました。

string s = myObj?.ToString() ?? "";

あるいは補間を使うこともできます:

string s = $"{myObj}";

元の回答:

string s = (myObj ?? String.Empty).ToString();

または

string s = (myObjc ?? "").ToString()

さらに簡潔にします。

残念ながら、指摘されているように、これを String または Object 以外の型で動作させるには、どちらかの側でキャストが必要になることがよくあります。

string s = (myObjc ?? (Object)"").ToString()
string s = ((Object)myObjc ?? "").ToString()

したがって、エレガントに見えるかもしれませんが、キャストはほとんどの場合必要であり、実際にはそれほど簡潔ではありません。

他の場所で提案されているように、これをよりクリーンにするために拡張メソッドを使用することをお勧めします。

public static string ToStringNullSafe(this object value)
{
    return (value ?? string.Empty).ToString();
}

おすすめ記事