- ベストアンサー
「New」キーワードを使ったFormの表示について
- VB2005で、Windowsアプリケーションを開発している際に、Formを開く際に使用する「New」キーワードについての質問です。
- 質問者は参考書に記載されていた「Dim Form2 As New Form2」という記述が必要かどうか疑問に思っています。
- また、「Form2.ShowDiaolog()」だけでも問題なくFormを開くことができるのか、そして「New Form2」という表現の意味についても理解したいとのことです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
例として簡単なクラスを作ってみます。 Public Class TestClass Public Sub ShowMessage() MsgBox("Testです。") End Sub End Class 一つのメソッドだけを持つクラスです。 このクラスのメソッドを呼び出す場合 TestClass.ShowMessage() とは書けません。(コンパイルもできません) TestClassという型を定義してあるに過ぎないからです。 この型の実体(インスタンス)を作る必要があります。 印鑑がクラスで、印影がインスタンスみたいな感じです。 Dim hensuu As TestClass '変数を用意 hensuu = New TestClass() 'インスタンス化して参照する hensuu.ShowMessage() 'メソッドを実行 という感じにhensuuという変数を宣言して、Newしたインスタンスを参照させてやる必要があります。 Formもクラスなので考え方としては同じで、Form2.ShowDialog()というように、型をインスタンスのように使ってしまうのは何か変です。 ところが、実はFormの場合だけは例外的に型でもあり、(暗黙の)インスタンスでもあるという約束があります。 そのため、Newしないで使用した場合は、どこからでもアクセスできる自動で実体化される既定のインスタンスを使うという意味になります。 ちなみに暗黙のインスタンス化は、VB6にはあって、VB.NETの2002と2003ではなくなり、2005で復活しました。 ちゃんと理解しようとすると余計にわかりづらいと思うのですが、こうできた方がお手軽ということなんでしょうかね。「暗黙のインスタンス」や、「既定のインスタンス」で検索すると、詳しい話が見つかると思います。 それと、デザイナでボタンとかを置いたからインスタンスがあるのではなくて、デザイナはクラスの一部分のコードを自動生成してくれているだけですよ。 プロジェクトのフォルダの中に、Form2.Designer.vbというファイルがあるはずなので、メモ帳などで開いてみてください。
お礼
supersonicさま、回答ありがとうございました。 とても丁寧でわかりやすかったです。 Formの場合だけ、「New」を使わなくても表示できたのは特殊だったんですね。なぜかな?と思っていたのでわかってすっきりしました。「New~」って大切なんですね。 デザイナで配置したコントロールですが、コードが自動生成されているの、確認しました。 回答をしてくださってありがとうございました。