使用VB.NET中的&或+进行字符串操作

Ero*_*ocM 25 .net vb.net string

我见过几个程序员使用&+进行字符串操作.

如:

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

thirdvar = firstvar & secondvar
Run Code Online (Sandbox Code Playgroud)

或者是:

thirdvar = firstvar + secondvar
Run Code Online (Sandbox Code Playgroud)

有关系吗?如果是这样,为什么?

bdu*_*kes 53

+&运营商在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'
Run Code Online (Sandbox Code Playgroud)

因此,我的指南(除了避免类似的混合类型)是使用&何时连接字符串,只是为了确保编译器清楚你的意图,并避免不可能发现涉及使用+运算符连接的错误.

  • "+运算符表示您打算添加数字"并非如此.它通常表示你打算将两个东西放在一起(不要忘记运算符重载!),并且可以正常工作2个字符串.`&`的唯一优点是它总是会导致字符串连接,并将所有操作数转换为字符串.也就是说,它仍然是一个优势,所以使用它是一个好主意. (3认同)
  • 刚使用`+`而不是`&`遇到了问题.做了类似这样的事情:`<%#ResolveUrl("〜/ page.aspx?id ="+ Eval("Id"))%>`.由于ID是一个"整数",VB尝试将左侧(URL)转换为数字类型,并在不能的情况下抛出异常. (2认同)

Pat*_*ski 5

考虑在连接字符串时是否最好使用String.Format.通常,代码最终会变得更有意义.

此外,如果多次连接,请考虑使用StringBuilder而不是String.