在C#和VB.NET中自动转换为字符串
本文关键字:转换 字符串 VB NET | 更新日期: 2023-09-27 17:48:49
我可以在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看到+I时,我怀疑它试图进行数字加法或使用类型中定义的加法运算符(或者毫无疑问,基于选项的其他更复杂的事情…)注意,System.String
没有定义加法运算符-它都通过调用String.Concat
隐藏在编译器中。(这允许更有效地连接多个字符串。)
Visual Basic对+
和&
运算符进行了区分。如果表达式不是字符串,&
将转换为字符串。
&
操作员(Visual Basic)
+
运算符使用更复杂的评估逻辑来确定最终转换为什么(例如,它受到Option Strict配置等因素的影响)
+
操作员(Visual Basic)
如果可能的话,我建议远离原始字符串串联。
好的替代方案是使用字符串格式:
str = String.Format("Hello {0} workd", Number)
或者使用System.Text.StringBuilder类,这在较大的字符串连接中也更有效。
两者都会自动将参数强制转换为字符串。
VB加号(+)运算符不明确。
如果你没有打开Option Explicit,如果我的记忆力很好,可以这样做:
Dim str = 1 + "2"
并得到整数为3的str。
如果您明确希望字符串串联,请使用与号运算符
Dim str = "Hello " & number & " world"
它会很乐意为您将数字转换为字符串。
我认为这种行为是为了向后兼容性。
在VB中编程时,请始终使用"与"符号连接字符串。