首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在VB.NET中连接字符串时+和&的区别

在VB.NET中连接字符串时+和&的区别
EN

Stack Overflow用户
提问于 2009-04-09 14:56:43
回答 6查看 83K关注 0票数 72

在VB.NET中连接字符串的+&有什么不同?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-04-09 15:02:51

如果两个操作数都是字符串,则没有区别。但是,如果一个操作数是一个字符串,而另一个是一个数字,那么就会遇到问题,请参见下面的代码。

代码语言:javascript
复制
"abc" + "def" = "abcdef"
"abc" & "def" = "abcdef"
"111" + "222" = "111222"
"111" & "222" = "111222"
"111" & 222 = "111222"
"111" + 222 = 333
"abc" + 222 = conversion error

因此,我建议在连接时始终使用&,因为您可能正在尝试将整数、浮点数、小数连接到字符串,这将导致异常,或者最好的情况下,不会执行您可能希望它执行的操作。

票数 94
EN

Stack Overflow用户

发布于 2009-04-09 15:01:06

&运算符始终确保两个操作数都是字符串,而+运算符查找与操作数匹配的重载。

表达式1 & 2给出值"12",而表达式1+2给出值3。

如果两个操作数都是字符串,则结果没有区别。

票数 14
EN

Stack Overflow用户

发布于 2010-09-14 03:32:03

没有。

正如你在下面看到的。这两行代码完全编译为相同的CIL代码:

代码语言:javascript
复制
Module Module1

    Sub Main()
        Dim s1 As String = "s1"
        Dim s2 As String = "s2"
        s2 += s1
        s1 &= s2
    End Sub

End Module

编译为(注意System.String::Concat):

代码语言:javascript
复制
.method public static void  Main() cil managed
{
.entrypoint
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
// Code size       31 (0x1f)
.maxstack  2
.locals init ([0] string s1,
       [1] string s2)
IL_0000:  nop
IL_0001:  ldstr      "s1"
IL_0006:  stloc.0
IL_0007:  ldstr      "s2"
IL_000c:  stloc.1
IL_000d:  ldloc.1
IL_000e:  ldloc.0
IL_000f:  call       string [mscorlib]System.String::Concat(string,
                                                          string)
IL_0014:  stloc.1
IL_0015:  ldloc.0
IL_0016:  ldloc.1
IL_0017:  call       string [mscorlib]System.String::Concat(string,
                                                          string)
IL_001c:  stloc.0
IL_001d:  nop
IL_001e:  ret
} // end of method Module1::Main
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/734600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档