我可以在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(),但是这里的代码是什么呢?
答案 0 :(得分:14)
在VB中我相信字符串连接运算符是&而不是+所以试试这个:
Dim number As Integer = 2
Dim str As String = "Hello " & number & " world"
基本上当VB看到+我怀疑它尝试进行数字加法或者使用在类型中定义的加法运算符(或者毫无疑问是其他更复杂的东西,基于选项......)注意System.String
没有定义一个加法运算符 - 它通过调用String.Concat
隐藏在编译器中。 (这样可以更有效地连接多个字符串。)
答案 1 :(得分:5)
Visual Basic区分+
和&
运算符。如果表达式不是字符串,&
将转换为字符串。
+
运算符使用更复杂的评估逻辑来确定最终投射的内容(例如,它受 Option Strict 配置影响)
答案 2 :(得分:3)
如果可能的话,我建议远离原始字符串连接。
好的替代方案是使用string.format:
str = String.Format("Hello {0} workd", Number)
或者使用System.Text.StringBuilder类,它在更大的字符串连接上也更有效。
两者都自动将其参数转换为字符串。
答案 3 :(得分:1)
VB plus(+)运算符不明确。
如果你没有明确选项,如果我的记忆正确,我可以这样做:
Dim str = 1 + "2"
并将str作为整数= 3。
如果您明确需要字符串连接,请使用&符号运算符
Dim str = "Hello " & number & " world"
它会愉快地将数字转换为字符串。
我认为这种行为是为了向后兼容而留下的。
在VB中编程时,请始终使用&符号来连接字符串。