Ampersand vs plus for concatenating strings in VB.NET [duplicate]

醉酒当歌 提交于 2019-11-26 05:58:33

问题


In VB.NET, is there any advantage to using & to concatenate strings instead of +?

For example

Dim x as String = \"hello\" + \" there\"

vs.

Dim x as String = \"hello\" & \" there\"

Yes, I know for a lot of string concatenations I\'d want to use StringBuilder, but this is more of a general question.


回答1:


I've heard good, strong arguments in favor of both operators. Which argument wins the day depends largely on your situation. The one thing I can say is that you should standardize on one or the other. Code that mixes the two is asking for confusion later.

The two arguments I remember right now for favoring &:

  • If you're not using Option Strict and have two numeric strings, it's easy for the compiler to confuse your meaning of of the + operator with, you know, arithmetic addition
  • If you're updating a lot of older vb6-era code it helps not to have to convert the concatenation operators ( and remember: we want consistency).

And for +:

  • If you have a mixed vb/C# shop, it's nice to only have one concatenation operator. It makes it easier to move code between languages and means just that much less of a context switch for programmers when moving back and forth between languages
  • & is almost unique to VB, while + between strings is understood in many languages to mean concatenation, so you gain a little something in readability.



回答2:


Micorosoft's preference is for VB progammers to use & for strings, NOT +.

You can also use the + operator to concatenate strings. However, to eliminate ambiguity, you should use the & operator instead.




回答3:


I prefer using & for string concatenations in VB.NET

One reason for this is to avoid any confusion e.g

MessageBox.Show(1 & 2) ' "12"
MessageBox.Show(1 + 2) ' 3



回答4:


It's safer to use & since you're making your intention clear to the compiler (I want to concatenate these two values and they should both be converted to strings).

Using + can lead to hard to find bugs if the strings are numerical values, at least if the option strict is off.

For example:

1 + "1" = 2 ' this fails if option strict is on
1 & "1" = 11

Edit: though if you're concatenating a non-string you should probably use some better method anyway.




回答5:


I suppose it is historical (non .NET Visual Basic uses &, not sure why they introduced the +) and a matter of taste (I prefer & because we concatenate strings, we don't add them...).



来源:https://stackoverflow.com/questions/3006153/ampersand-vs-plus-for-concatenating-strings-in-vb-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!