タイトル : Re: クラスの記述法 投稿日 : 2007/09/07(Fri) 11:21 投稿者 : 魔界の仮面弁士
> 質問1.この2つの書き方の得失は何でしょうか? 問題点として挙げられるのは、End Function/Sub の間違いによる BC30026 です。 動作面で見れば、どちらでも構いません。そのクラスを利用する側の立場で見たときに、 '並列記述 Dim X As New AlbumDef() 'クラス内クラス Dim X As New BaseDef.AlbumDef() のどちらが分かりやすいかで使い分ければよいでしょう。 個人的な意見としては、継承関係にあるものをクラス内クラスにする必要性は、 あまり感じられません。むしろ分かり難くなってしまうのではないでしょうか。 クラス内クラスは、どちらかといえば、親クラスに対して依存性の強いクラス、それも、 クラス外部で生成される事が少ないものに対して使うのが適しているように思います。 ちなみに、.NET Framework におけるクラス内クラスの実装例を見てみると、 System.Windows.Forms.TabControl 内の ControlCollection クラスや System.Windows.Forms.Control 内の ControlCollection クラスなどがありますね。 > 質問2.継承先でMyBaseとMeの使い分けが分かりません。 > 下記どちらでも良いみたいなんですが、得失は何でしょうか? MyBase は、継承元クラス上の実装を呼び出します。 MyClass は、継承先クラス上の実装を呼び出します。 Me は、インスタンス化されたクラス上の実装を呼び出します。 http://smdn.invisiblefulmoon.net/ikimasshoy/vbdotnet/memyclassmybase.html http://blogs.wankuma.com/jeanne/archive/2006/11/09/44157.aspx > 質問3.Option Strict Onなのに、 > Public Overloads Function Modified(ByVal value As Boolean) As Boolean > で、ワーニングもでない。Overloadsだからかな? どのような警告が出ることを期待しておられますか? # 以下、どうでも良い話。 # 私はこういう時に、日本語の「警告」か、英語表記の「warning」を使うようにしています。 # カタカナで書くと、ウォーニングにすべきかワーニングにすべきかという話になるので。 |