在VB.Net中用&和+表示Concat字符串

Jav*_*ram 23 vb.net concatenation

在连接字符串时,&和+运算符之间是否有任何区别?如果有,那么有什么区别?如果否,那么为什么下面的代码生成异常?

例:

    Dim s, s1, t As String
    Dim i As Integer

    s1 = "Hello"
    i = 1

    s = s1 & i
    t = s1 + i  //Exception here

    If s = t Then
        MessageBox.Show("Equal...")
    End If
Run Code Online (Sandbox Code Playgroud)

小智 31

&和+都是连接运算符,但是当使用+时指定整数时,vb.net会尝试将"Hello"转换为整数来进行添加.如果您使用"123"更改"Hello",您将得到结果124.


Mar*_*rkJ 22

  • & 仅用于字符串连接.
  • + 重载以执行字符串连接和算术添加.

双重目的+导致混乱,就像你的问题中的那样.尤其是当Option StrictOff,因为编译器会在您的字符串和整数添加隐式类型转换,以尽量使你的代码感.

我的建议

  • 你绝对应该转向Option Strict On,然后编译器将强制你在认为必要时添加显式强制转换.
  • +由于算术加法的模糊性,您应该避免使用连接.

这两项建议也出现在微软出版社的VB和C#实用指南和最佳实践中(第1.16节,第21.2节)


Chr*_*ens 5

您可能已经打开了 Option Strict(这是一件好事),并且编译器告诉您不能添加字符串和 int。尝试这个:

t = s1 & i.ToString()