在C#和VB.NET中自动转换为字符串

时间:2008-11-07 08:26:20

标签: c# vb.net casting

我可以在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(),但是这里的代码是什么呢?

4 个答案:

答案 0 :(得分:14)

在VB中我相信字符串连接运算符是&而不是+所以试试这个:

Dim number As Integer = 2
Dim str As String = "Hello " & number & " world"

基本上当VB看到+我怀疑它尝试进行数字加法或者使用在类型中定义的加法运算符(或者毫无疑问是其他更复杂的东西,基于选项......)注意System.String没有定义一个加法运算符 - 它通过调用String.Concat隐藏在编译器中。 (这样可以更有效地连接多个字符串。)

答案 1 :(得分:5)

Visual Basic区分+&运算符。如果表达式不是字符串,&将转换为字符串。

&Operator (Visual Basic)

+运算符使用更复杂的评估逻辑来确定最终投射的内容(例如,它受 Option Strict 配置影响)

+Operator (Visual Basic)

答案 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中编程时,请始终使用&符号来连接字符串。