2009-07-06 46 views
23

我曾見過幾位程序員使用&+進行字符串操作。使用VB.NET中的&或+進行字符串操作

如:

dim firstvar as string 
dim secondvar as string 
dim thirdvar as string 

thirdvar = firstvar & secondvar 

或者是:

thirdvar = firstvar + secondvar 

什麼關係呢?如果是這樣,爲什麼?

+0

可能的重複* [+和在VB.NET中加入字符串的區別](http://stackoverflow.com/questions/734600/the-difference-between-and-for-joining-strings-在-VB網)*。 – 2013-03-19 10:44:32

回答

48

+&運算符是而不是在VB.NET中是相同的。

使用&運算符表示您打算連接字符串,而+運算符表示您打算添加數字。使用&運算符會將操作的兩側轉換爲字符串。當你有混合類型(表達式的一邊是一個字符串,另一邊是一個數字)時,操作符的使用將決定結果。

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' 

所以,我的準則(除了避免混合類型那樣)是連接字符串時使用的&,只是爲了確保你的意圖是明確的編譯器,並避免無法找到的涉及缺陷使用+運算符進行連接。

2

&符號是推薦的方法。加號運算符有時可以用於字符串連接,但不被認爲是正確的,偶爾會產生意想不到的結果。

+0

什麼意想不到的結果? – 2009-07-06 16:59:30

+0

什麼時候會產生意想不到的結果?請詳細說明以獲得完整答案。 – jvanderh 2009-07-06 17:00:15

+4

在VB.NET中這不再是真的 - VB6和更早版本就是這種方式--vb.net在字符串上使用.NET運行時的運算符+,它完全支持。 &是VB.NET中的別名。 – 2009-07-06 17:00:24

2

在處理2個字符串時,它們在VB.NET中是完全相同的。 「&」運算符用於VB 6和更早版本的向後兼容性,其中&是字符串連接運算符,+不適用於文本。

如果您的兩個操作數中的一個不是字符串,則會有所不同,如bdukes pointed out。但是,在這種情況下,我強烈建議使用String.Format或StringBuilder(取決於操作的數量/類型)從混合類型構造結果字符串。總的來說,我會推薦使用+,原因是單一的。如果您決定將代碼翻譯成其他語言(即:C#),則+運算符將與翻譯版本匹配更多。來自其他語言的人可能會更容易理解並遵循您的代碼。

3

通常,&將始終連接字符串,無論參數類型如何,而+不會。由於在其他情況下使用&沒有任何缺點,所以在明確需要字符串連接的情況下,最好。它也使代碼的意圖更清晰。

5

請考慮如果在連接字符串時最好使用String.Format。通常,代碼最終會變得更有意義。

此外,如果連接多次,請考慮使用StringBuilder而不是String。

0

不管有多少提示「堅持一個或另一個」 - 它取決於沉重你結合。

總之,我會用「&」 的字符串「+」 只爲算術運算

爲什麼?看看https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/addition-operator#remarks

所有這些與切換嚴格選項的組合,就像編譯器的擲骰子一樣......對讀者來說永遠不會是顯而易見的。

我也將與明確的說法添加https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/operators-and-expressions/concatenation-operators#differences-between-the-two-concatenation-operators

+運算有兩數相加的主要目的。