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

タイトル Re^2: VB2005の'New'について
投稿日: 2006/11/07(Tue) 09:58
投稿者form・Z
> > Class_Array1(i) = Class_Array1(j) '(i <> j)
> > に等価な処理が行なわれたとします。
> この = は、(比較式のイコールではなく)代入式のイコールなのですね。
>
> > とすれば、一般にはClass_Array1(i) と Class_Array1(j)は別々の参照を
> > 持つはずです。(ここが間違っているのでしょうか?)
> 裏のコードが見えないので、確実にそうだとは保証できませんが、
> 一般的には別の参照となるでしょうね。
>
> 実際、同じオブジェクトの参照であるかどうかを、If 文等で調査されたかと
> 思いますが、その結果はどうでしたか?
>
> > ところが、私の環境でテストしたところでは、
> 問題を再現可能な「最小限のコード」を示してもらえませんか?
> もしかしたら、テストコードに問題があるのかも知れませんし。
>
> > これは、言語仕様なのでしょうか?
> 個人的な予想では、「うっかり Shared メンバを使ってました…」というオチな気がします。

この問題ですが、どうもマシンのメモリの問題のようで、マシンの起動直後
の作業では本来的な動作を見せているようです。
昨日のうちに回答したかったところですが、開発途中のコードが何度かバグを
起こしているうちに、マシン自体が不安定になって生じた動作かもしれません。

コードをまとめますと、

Class_Array(i) = Class_Array(j)
Msgbox(Object.ReferenceEquals(Class_Array(i), Class_Array(j)))'-(1)
Dim Class_Array_Work As New MyClass2
Class_Array(i) = Class_Array_Work
Msgbox(Object.ReferenceEquals(Class_Array(i), Class_Array(j)))'-(2)

とすると、Msgbox-(1)は"True"を表示、Msgbox-(2)は"False"を表示しました。

この段階からClass_Array(i).Numberの値を変更しても、Class_Array(j).Number
は別個の値を持っていたことから、インスタンスは別々に確保されて様です。

お騒がせいたしました。
ご回答いただきまして、ありがとうございました。

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

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