次のコードを見てください。
C#
string[] testString = new string[jobs.Count];
同等の VB.Net
Dim testString() As String = New String(jobs.Count - 1) {}
新しい配列の作成中に、vb.net で「jobs.Count」ではなく「jobs.Count - 1」を使用するのはなぜですか?
VB.NET では配列宣言の数値は「最大インデックス」を意味しますが、C# では「要素数」を意味します。
C# では、配列には指定した要素の数が含まれます。
string[] array = new string[2]; // will have two element [0] and [1]
VB.NET では、配列には指定した要素数に 1 を加えた数 (最大インデックス値を指定) が含まれます。
Dim array(2) As String // will have three elements (0), (1) and (2)
あなたのC#
コードサンプルでは、
string testString = new string[jobs.Count];
これは、文字列の配列を作成するコンストラクタです。
VB.Net の例では、
Dim testString As String = New String(jobs.Count - 1) {}
String
括弧内に宣言された文字列の長さを持つ新しいオブジェクトを参照しています。
VB.Net での配列を作成する場合は、次のString
ようにする必要があります。
Dim testString (jobs.Count) As String