2013-08-06 13 views
15

VB.NETで配列を宣言し、後でコード内の既知の長さに初期化する方法はありますか?言い換えれば、私は次のC#.NETコードのVB.NETと同等を探しています:VB.NET既知の長さの新しい空の配列を宣言する方法

string[] dest; 
// more code here 
dest = new string[src.Length]; 

私はVBでこれを試みたが、それは動作しませんでした。

Dim dest() as string 
' more code here 
dest = New String(src.Length) 

何が欠けていますか?


:私はその

Dim dest(src.Length) as string 

作品を確認するが、私は、配列の宣言と初期化を分離しているよ以来、私が欲しいものではありませんすることができます。

+0

新しい動的長さの配列を作成し、その長さを適用するにはどうしたらいいですか? C#コードを見ると、初期化中に実行されますが、宣言は行いません。 – glautrou

+2

'Redim' - ' Redim dest(src.Length) 'を試してください。 – Tim

+0

@Tim - VBでは、配列は長さではなく上限で指定されています。 「Redim dest(src.Length-1)」を実行する必要があります。 – ToolmakerSteve

答えて

30

コードで

Dim my_array() As String 

以降を少し違う。

string[] dest; 
// more code here 
dest = new string[src.Length]; 

の同等は、あなたは、すでに述べたが、これはあなたのC#

Dim dest As String() 
dest = New String(src.Length - 1) {} 

と同等のVBコード試してみて、しかし動的配列を使用しないようである。Redimを使用することができます

Dim dest As String() 
' more code here 
dest = New String(src.Length - 1) {} 
+0

多くの感謝!これは私が探していたものです! – SNag

+0

この答えは、String型の配列では動作しますが、他の型では動作しません。 – Luminous

+0

@Luminous答えは、配列リテラルを使用して配列変数を初期化する方法を示しています。私が知る限り、他のタイプに問題はありません。例外はありますか? –

8

のでような配列を宣言することでこれを行うには、通常の方法: - そのような場合にはVB.NETの構文は

ReDim my_array (src.Length - 1) 
+0

ReDimパラメータは最も高いインデックスです。ここでは、 'src.Length - 1'(' src.length'ではなく)です。これを編集として提出する。 – ToolmakerSteve

+0

@ToolmakerSteve、あなたは大丈夫です。私は昔ながらの1ベースの習慣から抜け出す必要があります... –

3

です汎用List(Of T)ははるかに柔軟です

関連する問題