两者之间有什么区别.ToString() 和 + “”

本文关键字:什么 区别 ToString 两者之间 | 更新日期: 2023-09-27 18:17:15

如果我有一个日期时间,我做:

date.Year.ToString()

我得到年份作为字符串。但如果我这样做

date.Year + ""

区别仅在于如果没有日期,第二个不会有例外?(我预知(

两者之间有什么区别.ToString() 和 + “”

当你写date.Year + ""时,它将被编译为对string.Concat(object, object)的调用:

String.Concat(date.Year, "")

在内部,Concat 方法将对每个(非 null(对象调用 ToString

如果null date,这两种方法都会引发NullReferenceException。但是你说dateDateTime型. DateTime 是一个结构,因此不能为 null。


如果 date 的类型为 DateTime?,并且想要在日期为 null 时返回空字符串,则可以使用以下命令:

date.HasValue ? date.Value.Year.ToString() : ""
date.Year.ToString()

如果日期为空,则不起作用。

date.Year + ""

即使年份为空也有效,因为二进制 + 运算符用空字符串替换空。

这就是 MSDN 所说的二进制 + 运算符连接两个字符串:

当一个或两个操作数为字符串类型时,二进制 + 运算符执行字符串串联。如果字符串串联的操作数为 null,则替换空字符串。否则,任何非字符串参数都将通过调用从类型对象继承的虚拟 ToString 方法转换为其字符串表示形式。如果 ToString 返回 null,则替换空字符串。

有关 http://msdn.microsoft.com/en-us/library/aa691375%28VS.71%29.aspx 的更多信息

如果date.Year不为空,则没有区别。

在第二个示例中,ToString() 方法在 date.Year 上隐式调用。