1. ホーム
  2. c#

[解決済み] NULLの可能性があるオブジェクトに対してToStringを実行するには?

2022-10-05 07:33:44

質問

以下のような簡単な方法はありますか?

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

以下のようなことができるのは知っていますが、本当にハックとしか思えません。

String s = "" + myObj;

Convert.ToString()に適切なオーバーロードがあれば最高なんですけどね。

どのように解決するのですか?

C#6.0編集。

C# 6.0では、orignalメソッドの簡潔でキャスト不要のバージョンを持つことができるようになりました。

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();
}