重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VB6.0で、ActiveXコンポーネントのインスタンス生成に関連する質問をさせていただきます。

まず前提として、VB6.0では、
ExcelのようなActiveXコンポーネントをコード上で生成する場合、下記の4通りの記述が可能です。
--------------------------------------------
'(1) 参照設定は要らない
Dim hoge As Object
Set hoge = CreateObject("Foo.Bar")

'(2) 参照設定が必要
Dim hoge As Foo.Bar
Set hoge = CreateObject("Foo.Bar")

'(3) 参照設定が必要
Dim hoge As Object
Set hoge = New Foo.Bar

'(4) 参照設定が必要
Dim hoge As Foo.Bar
Set hoge = New Foo.Bar
---------------------------------------------

この中で遅延バインディング(実行時バインディング)は(1)のみで、
(2)~(4)は事前バインディングです。

ここで疑問なのですが、開発者が事前バインディングでコーディングを行う場合、
(4)以外の記述(つまり、(2)と(3)の記述方法)にメリットや必要性はあるのでしょうか。

(2)はコード補完が使えなくなりますし、
(3)はレジストリ経由のせいでパフォーマンスが低下するでしょうし、
デメリットしかないように思われます。
そうであれば、これらの記述方法は推奨されないものなのでは、と思ったしだいです。

回答、よろしくお願いします。

A 回答 (2件)

基本的には、(1)か(4)以外はメリットはなく、


(2)については、レアなケースでメリットがある場合があります。
それは、開発過程の間です。

(1)を最終形で開発しているときに、開発完了直前までは
(2)にしておけば、コード補完が使えるので、便利で、
開発完了直前で、As ... を As Object に置換すれば
いっきに(1)に変えられるので、よくやります。

パフォーマンスを気にしない局面かつ
配布先環境で、参照設定が成功するか不安なケースで
As Objectなら On Error でトラップできるので、
私なんかは、(4)より(1)を多用します。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>(1)を最終形で開発しているときに、開発完了直前までは
>(2)にしておけば、コード補完が使える

上記のようなテクニックは非常に有用ですね。
開発形態によっては重宝できそうです。

2つの回答をいただいたおかげで、モヤモヤしていた部分がスッキリしました。
感謝します。

お礼日時:2008/12/29 09:16

私もデメリットしかないように思います。


実現方法としての紹介であって、推奨する記述方法の紹介と捕らえなければ良いのではないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
言語仕様としては可能、という程度の認識でよさそうですね。

お礼日時:2008/12/29 09:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!