'+'和'&'之间有任何区别for String concatenation?

时间:2015-04-24 16:39:39

标签: string vba

我最近意识到VBA还支持运算符+连接String类型,而不仅仅&。{} 因此,如果

Dim a As String, b As String
a = "Stack "
b = "Overflow"

以下陈述将产生相同的结果:

>> a + b '--> "Stack Overflow"
>> a & b '--> "Stack Overflow"

在我有限的经验中,我从未在任何语言中找到两个操作员总是相同的东西。我觉得VBA倾向于合并到其他常用语言(仅使用+来连接字符串)但仍支持旧学校VB开发人员的&

但这并不是一个技术性的解释,所以我想问下面的问题:两个运营商之间有什么实际区别吗?使用+而不是&的情况会产生不同的结果吗?

我的想法

我想到的一个可能的“类似答案”但在网络上的任何地方找不到都受到JavaScript的启发,您可以使用=====几乎所有地方都使用相同的行为,除了除了没有进行类型转换之外,identity(===)运算符的行为与equal(==)运算符相同,并且类型必须相同才能被认为是相等的。

1 个答案:

答案 0 :(得分:4)

好的,我找到了。试试这个:

Debug.Print "3" + 4 '--> 7

并将其与此进行比较:

Debug.Print "3" & 4 '--> "34"

啊!现在看到差异? &+的选择会影响它强制使用这些表达式的操作数的默认类型。

+会尝试转换String中的Numeric,如果可能的话,会将其视为&。另一方面,String会将元素视为Numeric,即使它们在import java.util.Arrays import java.util.HashMap import java.util.Iterator 中都可转换。