有一种简单的方法可以执行以下操作:
String s = myObj == null ? "" : myObj.ToString();
我知道我可以做到以下几点,但我真的认为它是一个黑客:
String s = "" + myObj;
如果Convert.ToString()有一个适当的重载将是很好的.
为什么第二个产生异常而第一个产生异常呢?
string s = null;
MessageBox.Show(s);
MessageBox.Show(s.ToString());
更新 - 我能理解的异常,令人费解的一点(对我来说)是第一部分没有显示异常的原因.这与Messagebox没有任何关系,如下图所示.
例如:
string s = null, msg;
msg = "Message is " + s; //no error
msg = "Message is " + s.ToString(); //error
第一部分似乎是隐式地将null转换为空字符串.
在我们自己的Jon Skeet的C#中,他讨论了模拟值类型的'null'的3种方法:
提到可空类型使用第三种方法.可空类型究竟如何在引擎盖下工作?
我只是想知道下两个语句之间有什么区别:
导致NullReferenceException - 没关系.
object test1 = default(int?);
object result = test1.ToString();
返回一个空字符串"",为什么?
object test2 = default(int?).ToString();
这与2相同.
int? test3 = null;
if (test3.ToString() == string.Empty) //returns true
{
    Console.WriteLine("int? = String.Empty, isn't it strange?").
}
而且只是为了好玩 - 我可以证明bool可以等于int值(嗯,怎么样?bool只能是false,或者是true,而int永远不会那样).
if (default(int?).ToString() == default(bool?).ToString()) //returns true because both are empty strings
{
    Console.WriteLine("int = bool");
}
注意: default(int?)返回null.
开门见山:
int? i = null;
i.ToString(); //happy
i.GetType(); //not happy
我得到一个非常相关的问题,它实际上解决了为什么i.ToString()工作正常.
编辑:刚刚发现这个角落的案例是这个SO线程中投票最多的案例!
我知道Convert.ToString(obj)处理null值并且ToString(obj)不处理null值.这意味着如果obj值为null,它将抛出一个错误.
ex:- 
object b = null;
textBox1.Text = b.ToString(); // It will throw a null reference exception because the object value is null.
这是正确的,并按预期工作.但,
ex:-
int? c = null;
textBox1.Text = c.ToString();
我试过这种方式.但在这种情况下,它不会抛出空引用异常错误.为什么不抛出空引用异常错误.谁能回答?
建议欢迎.