c# - Convert.ToString 返回 string.empty 而不是 null

标签 c# string type-conversion

我发现了 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 ("")

它在我看来就像一个错误,因为当我转换为字符串并且输入为 NULL 时,结果应该是字符串的默认值,它也是 NULL。

最佳答案

Convert.ToStringa String overload that does nothing :

Returns the specified string instance; no actual conversion is performed.



its Object overload定义如下:

The string representation of value, or String.Empty if value is null.



这可能有点令人惊讶,但没有理由使用 Convert.ToStringString首先表达。

关于c# - Convert.ToString 返回 string.empty 而不是 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50923613/

相关文章:

c# - 如何找出自定义类型正在使用其方法的 BCL 类型?

regex - 如何从字符串中删除和 ID

android - 如何从 byte[] 创建一个 Drawable? (安卓)

python - 同一行输出中的多种类型

c# - 如何在 C# 中自动删除临时文件?

c# - 将大量 xml 数据写入文件的最佳方法?

c# - 如何使 Entity Framework 代码首先序列化属性列表

string - 如果变量名存储为字符串,如何获取变量值?

c - 在 C 中将指针与函数一起使用时出现错误

Java:方法返回类型为数组错误