Как сделать ToString для возможно нулевого объекта? - PullRequest
78 голосов
/ 21 октября 2010

Есть ли простой способ сделать следующее:

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

Я знаю, что могу сделать следующее, но я действительно считаю это взломом:

String s = "" + myObj;

Было бы замечательно, если бы Convert.ToString () имел надлежащую перегрузку для этого.

Ответы [ 12 ]

1 голос
/ 21 октября 2010

Holstebroe комментарий будет вашим лучшим ответом:

string s = string.Format("{0}", myObj);

Если myObj равно нулю, формат помещает туда значение пустой строки.

Он также удовлетворяет вашим требованиям в одну строку и легко читается.

0 голосов
/ 25 января 2019

Несмотря на то, что это старый вопрос и ОП попросил C #, я хотел бы поделиться решением VB.Net для тех, кто работает с VB.Net, а не с C #:

Dim myObj As Object = Nothing
Dim s As String = If(myObj, "").ToString()

myObj = 42
s = If(myObj, "").ToString()

К сожалению, VB.Net не разрешает? -Оператор после переменной, поэтому myObj? .ToString недопустим (по крайней мере, не в .Net 4.5, который я использовал для тестирования решения).Вместо этого я использую If, чтобы вернуть пустую строку, если myObj ist Nothing.Таким образом, первый Tostring-Call возвращает пустую строку, а второй (где myObj не является Nothing) возвращает «42».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...