1

为什么 VB.Net 转换此代码

Sub Main()
    Dim str As String = ""
    Dim lNumber As Integer = 0
    str = "String " + lNumber
    Console.WriteLine(str)
End Sub

public static void Main()
{
    int lNumber = 0;
    Console.WriteLine(Conversions.ToString((double) (Conversions.ToDouble("String ") + lNumber)));
}

而不仅仅是

public static void Main()
{
    int lNumber = 0;
    Console.WriteLine("String " + lNumber);
}

我在 C# 中这样问

当一个或两个操作数都是字符串类型时,+ 连接操作数的字符串表示形式

4

2 回答 2

6

VB.NET +*
VB.NET 将运算符+视为算术运算符,尝试将一个数字与另一个数字相加。如果一个操作数是数字,则它将另一个操作数转换为数字(但仅当Option Explicitis时On)。只有当两个操作数都是字符串时,这些字符串才会被连接。

请参阅:http: //msdn.microsoft.com/en-US/library/9c5t70w2%28v=vs.80%29.aspx

VB.NET &*
VB.NET 将运算符&视为连接字符串的运算符。如果一个操作数是字符串,则它将另一个操作数转换为字符串。

请参阅:http: //msdn.microsoft.com/en-US/library/wfx50zyk (v=vs.80).aspx

C#.NET +*
C#.NET 将 operator+视为连接运算符的算术运算符,具体取决于数据类型。如果一个操作数是字符串,则它将另一个操作数转换为字符串。

请参阅:http: //msdn.microsoft.com/en-us/library/k1a63xkz (v=vs.71).aspx

所以知道了这一点,VB.NET 运算符 + 转换为将操作数转换为数字的方法是合乎逻辑的。

要查看语言之间的所有差异,请参阅:http ://www.harding.edu/fmccown/vbnet_csharp_comparison.html

于 2013-04-29T23:53:43.247 回答
1

我在这里找到了我的问题的答案(+ Operator (Visual Basic))

表达式的数据类型:当一个表达式是数字数据类型而另一个是字符串时会发生什么?

编译器的操作:如果 Option Strict 为 On,则生成编译器错误。如果 Option Strict 为 Off,则将 String 隐式转换为 Double 并添加。如果 String 无法转换为 Double,则抛出 InvalidCastException 异常。

于 2013-04-29T23:32:47.343 回答