繁体   English   中英

VB.Net到'+'运算符的C#转换

[英]VB.Net to C# conversion of '+' operator

为什么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#中

当一个或两个操作数的类型为string时,+组合操作数的字符串表示形式

VB.NET + *
VB.NET将运算符+视为算术运算符,请尝试将一个数字添加到另一个数字。 如果一个操作数是数字,则将另一操作数转换为数字(但仅当Option ExplicitOn )。 仅当两个操作数都是字符串时,这些字符串才会被合并。

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

VB.NET&*
VB.NET将运算符&作为运算符来简化字符串。 如果一个操作数是字符串,它将另一个操作数转换为字符串。

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

C#.NET + *
C#.NET将运算符+视数据类型而定,视为隐含运算符的算术运算符。 如果一个操作数是字符串,它将另一个操作数转换为字符串。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM