我最近意识到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(==)运算符相同,并且类型必须相同才能被认为是相等的。
答案 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
中都可转换。