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 Explicit) 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 に答える