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