あんにんにっき。

日々思ったことや、おこったことを記録するブログ。要するに日記。

VB2005はVB.NETから入った人間にとっては激しく気持ち悪い

 噂では聞いていたが、VB2005では、あるフォームから別のフォームを開くとき、その新しいフォームのインスタンスを作っておく必要がない。クラスメソッドのようにクラス名に対して .ShowDialogすれば新しいフォームが起動する。それはまあいい。
 どうやら、この方式で作り出した場合、最初に作り出したインスタンスを暗黙に使いまわすようである。たとえば、Form2.show()を適当なボタンに対する処理として書いた後、ボタンを複数回押したとしても、最初出ているフォームが消えていなければ新しいフォームのインスタンスは作られないしNewもされない。なんか妙に気持ち悪い。
 ちなみに、ボタンを押した数だけFormを出そうと思うと、従来通り変数宣言してコンストラクタを明示的に呼び出して、それに対してShowすればよい。
 なお、この性質をうまく利用すると、Form2からForm1を参照したいと思った時、Form2へForm1インスタンスへの参照を渡さなくても、Form1クラスに対して操作を行う事で操作できてしまうようだ。これも気持ち悪いが、同じことが簡単にできるので便利と考える手もある。
 しかし、VB.NETから入った人間にとって激しく気持ち悪いのと同様、VB6等から入った人間にとっては同じくらいVB.NETも気持ち悪かったのだろうと思われる。