タイトル : VB2005の'New'について 投稿日 : 2006/11/06(Mon) 16:11 投稿者 : form・Z
既出であればご容赦いただければと思います。 VB2005のコードに関連した質問です。 例えばクラス'MyClass1'のメンバとしてクラス配列を Public Class_Array1() As MyClass2 のように定義し、一定の処理を経て、 Class_Array1(i) = Class_Array1(j) '(i <> j) に等価な処理が行なわれたとします。 このとき、Class_Array1(i) と Class_Array1(j) は同じターゲットを参照するはずですが、この段階から Class_Array1(i) と Class_Array1(j)の参照先を別々にする場合は通常、 Dim Class_Array_Work as New MyClass2 Class_Array1(j) = Class_Array_Work とすれば、一般にはClass_Array1(i) と Class_Array1(j)は別々の参照を 持つはずです。(ここが間違っているのでしょうか?) ところが、私の環境でテストしたところでは、MyClass2がメンバとして 例えば'Number'なる整数型データを持つとして、 Dim Class_Array_Work as New MyClass2 Class_Array1(j) = Class_Array_Work Class_Array1(j).Number = 1 とすると、Class_Array1(i).Numberも同じ値に変更されてしまったのに対し、 Dim Class_Array_Work as New MyClass2 Class_Array_Work.Number = 1 Class_Array1(j) = Class_Array_Work とすると、Class_Array1(i).Numberは元の値を保持し、Class_Array1(i) と Class_Array1(j)はそれぞれが個別の参照を持っているようです。 これは、言語仕様なのでしょうか? Newステートメントについて、私の理解が間違っているかもしれないのですが、 どのようなことなのか教えていただければと思います。 よろしくお願い申し上げます。 |