Ampersand vs plus用于在VB.NET中连接字符串

dcp*_*dcp 53 vb.net string-concatenation

在VB.NET中,使用&连接字符串而不是+

例如

Dim x as String = "hello" + " there"
Run Code Online (Sandbox Code Playgroud)

Dim x as String = "hello" & " there"
Run Code Online (Sandbox Code Playgroud)

是的,我知道我想要使用很多字符串连接StringBuilder,但这更像是一个普遍的问题.

Joe*_*orn 41

我听到了有利于两家运营商的良好,强有力的论据.哪一个赢得胜利的主要取决于你的情况.我可以说的一件事是你应该在一个或另一个上标准化.混合这两者的代码后来要求混淆.

我现在记得的两个论点是赞成&:

  • 如果你没有使用&并且有两个数字字符串,那么编译器很容易混淆你的Option Strict运算符的含义,你知道,算术加法
  • 如果你正在更新许多旧的vb6时代代码,那么就不必转换连接运算符(并记住:我们需要一致性).

对于+:

  • 如果你有一个混合的vb/C#商店,那么只有一个连接运算符是很好的.它使得在语言之间移动代码变得更加容易,并且意味着在语言之间来回移动时,程序员的上下文切换就更少了
  • &几乎是VB独有的,而字符串之间的+在许多语言中被理解为连接,因此您可以获得一些可读性.

  • @MarkJ实际上VB.NET比C#更好,甚至,因为至少你可以选择使用`&`.在C#中,字符串连接可以*总是*执行一个隐含的`ToString`,并且没有办法将其关闭.我不能告诉你我有多讨厌这个.很高兴看到VB.NET得到了这个(令人震惊!) (14认同)
  • 字符串连接的`&`有问题.来自[文档](http://msdn.microsoft.com/en-us/library/te2585xw.aspx)"&运算符总是将其操作数扩展为String,而不管Option Strict的设置如何".因此,例如`"Hello"&2.5`将使用区域设置将2.5静音转换为字符串(您可能会得到"2.5"或"2,5"`).好吧,如果这是你想要的.我非常愿意明确地强制指定它. (10认同)

Wal*_*ter 41

Micorosoft的首选是VB编程人员使用&用于字符串,NOT +.

您还可以使用+运算符来连接字符串.但是,要消除歧义,您应该使用&运算符.

  • +1使用MSDN文档而不是个人意见!两者都有效,但只有一个是正式的.:)您可能还想链接到&上的文档 - http://msdn.microsoft.com/en-us/library/wfx50zyk.aspx (4认同)
  • 很棒的链接,谢谢! (2认同)

cod*_*ger 13

我更喜欢&在VB.NET中使用字符串连接

其中一个原因是避免任何混淆,例如

MessageBox.Show(1 & 2) ' "12"
MessageBox.Show(1 + 2) ' 3
Run Code Online (Sandbox Code Playgroud)

  • 好点 - 虽然我认为默认是关闭的? (4认同)
  • 嗨巴里,也可以放下每个例子的结果.例如注释`//"12"`vs` //"3"`.这有助于说明那些不了解差异的人的观点. (4认同)
  • 这只是"Option Strict"关闭的问题. (2认同)

Han*_*son 10

使用它更安全,因为你的目的是让编译器清楚(我想连接这两个值,它们都应该转换为字符串).

如果字符串是数值,使用+可能导致很难找到错误,至少如果禁用选项strict.

例如:

1 + "1" = 2 ' this fails if option strict is on
1 & "1" = 11
Run Code Online (Sandbox Code Playgroud)

编辑:虽然如果你连接一个非字符串,你应该使用一些更好的方法.


Phi*_*Lho 5

我想它是历史的(非.NET Visual Basic使用&,不确定为什么他们引入了+)和品味问题(我更喜欢并因为我们连接字符串,我们不添加它们......).