2016-08-13 13 views
2

私はArray.clear機能に問題があるVb.net:Array.clearクリーン関連アレイの問題

これは単純なコードです:Array.Clearを行い、それだけではなくなった後

Dim Array1() As Double = {1, 2} 
Dim Array2(UBound(Array1)) As Double 
Array2 = Array1 
Array.Clear(Array1, 0, Array1.Length) 

アレイ1はクリーンアップされますが、アレイ2もクリーンアップされます。

ここで何が起こりましたか?これを防ぐために私は何ができますか?

ありがとうございました!

何が起こっている

答えて

3

Array2 = Array1 

Assigning one array to another

下記のリンクで述べたように、上記のステートメントはコピーのみポインタ、配列2に代わりに上記のステートメントを配列1の要素をコピーしません。

上記の理由により、実行時に

Array.Clear(Array1, 0, Array1.Length) 

Array1の値は0に変更され、Array2はArray1の新しい値、つまりすべて0になります。

それを防ぐためにどのように

コピーの要素を

使用アレイのコピー。

Dim Array1() As Double = {1, 2} 
Dim Array2(UBound(Array1)) As Double 
Array.Copy(Array1,Array2,Array2.Length) //Array.Copy(source, target, target.Length) 
Array.Clear(Array1, 0, Array1.Length) 
+0

ありがとうございました!これがすべて必要です –

+0

@NguyenDucLinh大歓迎!お役に立てて嬉しいです :) – ZerosAndOnes