我可以在C#中做到这一点..
int number = 2; string str = "Hello " + number + " world";
..和str最终成为"Hello 2 world".
在VB.NET中,我可以这样做..
Dim number As Integer = 2 Dim str As String = "Hello " + number + " world"
..但是我得到一个InvalidCastException"从字符串转换"Hello"到'Double'类型无效."
我知道在这两种情况下都应该使用.ToString(),但是这里的代码是什么呢?
在VB中我相信字符串连接运算符是&而不是+所以试试这个:
Dim number As Integer = 2 Dim str As String = "Hello " & number & " world"
基本上当VB看到+我怀疑它尝试做数字加法或使用类型中定义的加法运算符(或者毫无疑问其他更复杂的东西,基于选项...)注意,System.String
没有定义加法运算符 - 它全部隐藏在编译器中通过调用String.Concat
.(这允许更有效地连接多个字符串.)
Visual Basic中使得区分+
和&
运营商.该&
将使转换为字符串,如果表达式的值不是一个字符串.
&
运算符(Visual Basic)
该+
运营商采用更复杂的评价逻辑,以确定哪些做最后撒入(例如它的影响之类的选项严格配置)
+
运算符(Visual Basic)