我发现了Convert.ToString的奇怪行为,希望能够理解为什么会这样。
看一下以下代码:
string obj = null;
var str = Convert.ToString(obj);
Console.WriteLine(str); // CORRECT: returns null;
到目前为止一切都很好,但是:
DBNull obj = DBNull.Value;
var str = Convert.ToString(obj);
Console.WriteLine(str); // ???: returns string.Empty ("")
并且
object obj = null;
var str = Convert.ToString(obj);
Console.WriteLine(str); // ???: returns string.Empty ("")
在我看来,这似乎是一个bug,因为当我将输入转换为字符串并且输入为NULL时,结果应该是字符串的默认值,即NULL。