我最近意识到 VBA 还支持+连接String类型的运算符,而不仅仅是&. 因此,如果
Dim a As String, b As String
a = "Stack "
b = "Overflow"
Run Code Online (Sandbox Code Playgroud)
以下语句将产生相同的结果:
>> a + b '--> "Stack Overflow"
>> a & b '--> "Stack Overflow"
Run Code Online (Sandbox Code Playgroud)
以我有限的经验,我从未发现任何语言中两个运算符总是做同样的事情。我觉得 VBA 正在趋向于与其他通用语言合并(仅使用+连接字符串),但仍然支持&老派 VB 开发人员。
但这听起来不太像是一个技术解释,所以我想问以下问题:这两个运算符之间有什么实际区别吗?+使用而不是&产生不同结果的情况吗?
我想到但在网络中找不到的一个可能的“类似答案”是受 JavaScript 启发的,在 JavaScript 中,您可以在几乎任何地方使用 和==具有===相同的行为,除了身份 (===) 运算符的行为与相等 (==) 运算符,但不进行类型转换,并且类型必须相同才能被视为相等。
好的,我找到了。尝试这个:
Debug.Print "3" + 4 '--> 7
Run Code Online (Sandbox Code Playgroud)
并将其与此进行比较:
Debug.Print "3" & 4 '--> "34"
Run Code Online (Sandbox Code Playgroud)
啊!现在看到区别了吗?&vs.的选择+会影响它将这些表达式的操作数强制为的默认类型。
他们+将尝试转换String输入Numeric,并且如果可能的话,将按原样对待它们。另一方面&,将继续将这些元素视为String即使它们都可以在Numeric.