繁体   English   中英

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

[英]What's the differences between .ToString() and + “”

如果我有一个DateTime,我会:

date.Year.ToString()

我把年份作为字符串。 但是,如果我这样做

date.Year + ""

差异只是如果没有日期,第二个不会得到例外? (我先发制人)

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

String.Concat(date.Year, "")

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

如果datenull则两种方法都将抛出NullReferenceException 但是你说dateDateTime类型。 DateTime是一个结构,因此不能为null。


如果dateDateTime?类型DateTime? 并且如果date为null则想要返回一个空字符串,那么你可以使用它:

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

如果date为null,则无效。

date.Year + ""

即使year为null也可以工作,因为binary +运算符用空字符串替换null。

这就是MSDN所说的关于二元+运算符连接两个字符串的内容:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM