[英]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.