簡體   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