我曾見過幾位程序員使用&
和+
進行字符串操作。使用VB.NET中的&或+進行字符串操作
如:
dim firstvar as string
dim secondvar as string
dim thirdvar as string
thirdvar = firstvar & secondvar
或者是:
thirdvar = firstvar + secondvar
什麼關係呢?如果是這樣,爲什麼?
我曾見過幾位程序員使用&
和+
進行字符串操作。使用VB.NET中的&或+進行字符串操作
如:
dim firstvar as string
dim secondvar as string
dim thirdvar as string
thirdvar = firstvar & secondvar
或者是:
thirdvar = firstvar + secondvar
什麼關係呢?如果是這樣,爲什麼?
使用&
運算符表示您打算連接字符串,而+
運算符表示您打算添加數字。使用&
運算符會將操作的兩側轉換爲字符串。當你有混合類型(表達式的一邊是一個字符串,另一邊是一個數字)時,操作符的使用將決定結果。
1 + "2" = 3 'This will cause a compiler error if Option Strict is on'
1 & "2" = "12"
1 & 2 = "12"
"text" + 2 'Throws an InvalidCastException since "text" cannot be converted to a Double'
所以,我的準則(除了避免混合類型那樣)是連接字符串時使用的&
,只是爲了確保你的意圖是明確的編譯器,並避免無法找到的涉及缺陷使用+
運算符進行連接。
&符號是推薦的方法。加號運算符有時可以用於字符串連接,但不被認爲是正確的,偶爾會產生意想不到的結果。
什麼意想不到的結果? – 2009-07-06 16:59:30
什麼時候會產生意想不到的結果?請詳細說明以獲得完整答案。 – jvanderh 2009-07-06 17:00:15
在VB.NET中這不再是真的 - VB6和更早版本就是這種方式--vb.net在字符串上使用.NET運行時的運算符+,它完全支持。 &是VB.NET中的別名。 – 2009-07-06 17:00:24
在處理2個字符串時,它們在VB.NET中是完全相同的。 「&」運算符用於VB 6和更早版本的向後兼容性,其中&是字符串連接運算符,+不適用於文本。
如果您的兩個操作數中的一個不是字符串,則會有所不同,如bdukes pointed out。但是,在這種情況下,我強烈建議使用String.Format或StringBuilder(取決於操作的數量/類型)從混合類型構造結果字符串。總的來說,我會推薦使用+,原因是單一的。如果您決定將代碼翻譯成其他語言(即:C#),則+運算符將與翻譯版本匹配更多。來自其他語言的人可能會更容易理解並遵循您的代碼。
通常,&將始終連接字符串,無論參數類型如何,而+不會。由於在其他情況下使用&沒有任何缺點,所以在明確需要字符串連接的情況下,最好。它也使代碼的意圖更清晰。
請考慮如果在連接字符串時最好使用String.Format。通常,代碼最終會變得更有意義。
此外,如果連接多次,請考慮使用StringBuilder而不是String。
不管有多少提示「堅持一個或另一個」 - 它取決於沉重你結合。
總之,我會用「&」 的字符串和「+」 只爲算術運算
所有這些與切換嚴格選項的組合,就像編譯器的擲骰子一樣......對讀者來說永遠不會是顯而易見的。
+運算有兩數相加的主要目的。
可能的重複* [+和在VB.NET中加入字符串的區別](http://stackoverflow.com/questions/734600/the-difference-between-and-for-joining-strings-在-VB網)*。 – 2013-03-19 10:44:32