• ベストアンサー

共通用参照クラスのインスタンス生成方法

共通参照用クラスのインスタンスの生成にトライしていますが、なかなか上手くいきません。参考になる書籍とかHPがございましたらお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

クラスに共通とか、非共通とかいう概念はありません。 しいて言えば、参照元がどの領域からインスタンスを生成するかによって、 public(ソリューションレベル)、freiend(プロジェクトレベル)などの指定が変わってきます。 インスタンスを生成したクラス以外のクラスで、同一インスタンスを参照する場合には、 クラスハンドルを参照先クラスに渡すことにより、参照可能となります。 例 Public Class ClassName1 Public sub New() dim class2Hd as new ClassName2 dim class3Hd as new ClassName3 class2Hd.SetClassHd=class3Hd class2Hd.method1 end sub Public sub method1() End sub End class Public Class ClassName2 Private class3Hd as ClassName3 ublic sub New() End sub Public writeOnly Property SetClassHd Set(value as ClassName3) class3Hd =value End set End property Public sub method1() class3Hd.method1 End sub End class Public Class ClassName3 Public sub New() End sub Public sub method1() End sub End class  上記例では、ClassName1で、ClassName2、ClassName3のインスタンスを生成しています。   ClassName2では、ClassName3のインスタンスを生成せずに、参照が可能となるわけです。   (動作確認してないけど、こんな感じです)   複数のクラスを同じように持ち回りたい(参照したい)場合には、当然その数分のハンドルを   渡さなければなりません。そこは工夫して例えば、クラスハンドルを保持するクラスのみ   を作成し、そのクラスハンドルを上記例と同様に設定していけばいいことになります。   あとは、プロパティとして受け取ったクラスハンドルから、参照したいクラスハンドルを取得す   る仕組みを作ればいいことになるわけです。   こうゆうことに、気づくには、クラスとはなんぞや?、インスタンスとはなんぞや?、自分の   作ったプログラムソースがどのような仕組みで、実行されるのかを理解することが必要です。   ソースを見ることも大事ですが、一つ目線を上げて全体をみることが大事だと思います。   それでは、頑張ってください。           

totti1800
質問者

お礼

コーディングまでしていただき感謝しています。 かなり書籍を読んで、いろいろコーディングを試みましたが上手くいかなかったので、ありがたく活用させていただきます。

関連するQ&A