的差異+」如果我有一個DateTime,和我做的:什麼的ToString()和「
date.Year.ToString()
我拿到年終爲String。但如果我也
date.Year + ""
區別只是,第二個不會得到一個例外,如果沒有日期? (我prefeer)
的差異+」如果我有一個DateTime,和我做的:什麼的ToString()和「
date.Year.ToString()
我拿到年終爲String。但如果我也
date.Year + ""
區別只是,第二個不會得到一個例外,如果沒有日期? (我prefeer)
date.Year.ToString()
如果日期爲空,則不起作用。
date.Year + ""
即使年份爲空,作爲二元運算符+運算符將null替換爲空字符串也可以工作。
這是MSDN說,關於二元+運算符來連接兩個字符串:
二元+運算符執行字符串連接時,一個或兩個操作數爲string類型。如果字符串連接的操作數爲空,則替換空字符串。否則,通過調用從object類型繼承的虛擬ToString方法,將任何非字符串參數轉換爲其字符串表示形式。如果ToString返回null,則替換空字符串。
關於http://msdn.microsoft.com/en-us/library/aa691375%28VS.71%29.aspx的更多信息
當編寫date.Year + ""
它將被編譯爲一個呼叫到string.Concat(object, object)
:
String.Concat(date.Year, "")
在內部,Concat
方法將調用每個(非空)對象上ToString
。
如果date
是null
,則兩種方法都會拋出NullReferenceException
。但你說date
是DateTime
的類型。 DateTime
是一個結構,因此不能爲空。
如果date
是DateTime?
類型,並希望返回一個空字符串,如果日期爲null,則你可以使用這個:
date.HasValue ? date.Value.Year.ToString() : ""
呃,我不這麼認爲!在第二種情況下,如果年份爲空,則不會收到任何錯誤/異常。只是,它不會做任何事情... – markzzz
@markzzz:'Year'不能爲空。它是'int'類型。 –
沒有區別,如果date.Year
不爲空。
在第二個示例中,ToString()
方法在date.Year
上隱式調用。
'date.Year +「」'即使日期爲空也能工作嗎?真?如何將DateTime放在第一位? –
馬克說什麼,它是如何爲零?如果它被宣佈爲可空的,這不僅是可能的嗎? – dbasnett