![](/img/trans.png)
[英]What's the difference between ToString(“D2”) .ToString(“00”)
[英]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
。
如果date
为null
则两种方法都将抛出NullReferenceException
。 但是你说date
是DateTime
类型。 DateTime
是一个结构,因此不能为null。
如果date
是DateTime?
类型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.