2009-04-03 2 views

答えて

20

間違った方法:

myArray = Nothing 

のみ何も配列を指し示す変数を設定しますが、実際には配列をクリアしません。同じ配列を指す他の変数は、その値を保持します。したがって、アレイをクリアする必要があります。

正しい方法あなたが望むによって

Array.Clear(myArray,0,myArray.Length) 
+0

コードを少し修正しました。 ;-) – Cerebrus

+0

* cerebrusの拍手が遅い*それはもっと分かりやすいでしょう:) – TheTXI

+3

それは配列をクリアしません - それは変数をNothingに設定します。同じ配列を参照しているものは、それでも既存の値が表示されます。 –

2

  • 割り当ては何も(ヌル)
  • は、新しい(空の)配列
  • を割り当てArray.Clear

最後は最も遅くなる可能性が高いが、新しい配列を必要としない場合は、オプションを使用します。

2

透明なものを行う必要がある場合は、コレクションのが、配列ではなくList(Of String)のようになります。

+0

良い点、既存の配列...あなたは1つのコマンドで文字列のリストに文字列を分割することはできませんか? – spacemonkeys

+0

いいえ、String.Splitの結果に対して.ToList()を呼び出すことができます。 –

+0

またはList.AddRange() –

6

そしてもちろんの消去キーワードを使用してVBの方法があります:あなたへ

Dim arr() as String = {"a","b","c"} 
Erase arr 
+1

VBISでは+1が残っていますが、残念ながら 'Erase'は[documented](https://msdn.microsoft.com/en-us/library/83zyeke9.aspx)と同じです変数を 'Nothing'に設定するだけです。配列を消去しません。 –

1

のReDim ARR(1,1,1,1) 、その後 REDIM(V Z、X、Y、)寸法

関連する問題