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

Spr*_*tar 4 c# vb.net casting

我可以在C#中做到这一点..

int number = 2;
string str = "Hello " + number + " world";
Run Code Online (Sandbox Code Playgroud)

..和str最终成为"Hello 2 world".

在VB.NET中,我可以这样做..

Dim number As Integer = 2
Dim str As String = "Hello " + number + " world"
Run Code Online (Sandbox Code Playgroud)

..但是我得到一个InvalidCastException"从字符串转换"Hello"到'Double'类型无效."

我知道在这两种情况下都应该使用.ToString(),但是这里的代码是什么呢?

Jon*_*eet 14

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

Dim number As Integer = 2
Dim str As String = "Hello " & number & " world"
Run Code Online (Sandbox Code Playgroud)

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


The*_*kie 5

Visual Basic中使得区分+&运营商.该&将使转换为字符串,如果表达式的值不是一个字符串.

&运算符(Visual Basic)

+运营商采用更复杂的评价逻辑,以确定哪些做最后撒入(例如它的影响之类的选项严格配置)

+运算符(Visual Basic)