tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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ステートメントについて、私の理解が間違っているかもしれないのですが、
どのようなことなのか教えていただければと思います。

よろしくお願い申し上げます。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。