2009-06-06 11 views
1

私は(C言語ではabstract)と宣言されているVB.NETクラスを見ていますが、その3つのメソッドはすべてSharedと定義されていますC#のstatic)。クラスにはプロパティやフィールドはありません.3つのメソッドのみがあります。 OOの観点からは、これは意味をなさないでしょうか?あなたはそれを継承し、派生クラスのインスタンスを作成する必要があります - それMustInheritすることによって、あなたは基本的にあなたは、このクラスのインスタンスを作成することはできません言っているので、MustInheritと共有関数

私の考えは、ないです。しかし、すべてのメソッドが共有されているので、実際には親クラスのインスタンスを作成することは決してないので、MustInheritはうまくいきません。あなたもそうであるかもしれませんそれをMustInheritとマークし、あなたが望むときはいつでもそれを継承します。

このようにクラスを作成することは意味がありますか?

答えて

2

をインスタンス化したことがないですように、それは(MustInherit)抽象マークされている回避策ように、ということはできないと思います他の人が言っているように、彼らは本当にC#静的クラスがほしいと思うように思えます。 VBの "static"は "shared"ですが、VBでは "shared"というクラスをマークすることはできません。違いは、誰かがこのクラスを継承してインスタンスを作成できることです。 C#静的クラスはシールされています。

何をにする必要がありますか?は、Moduleを使用してください。 VB ModuleとC#静的クラスは事実上同じです。メンバーはインスタンスではなくタイプに関連付けられており、継承することはできません。

+0

モジュールはネームスペース内で自動的にインポートされます。 – jmoreno

0

OOの観点からは、これは意味をなさない。

しかし、VBでは、C#のようにクラスを共有としてフラグを立てる方法がありません。 C#では、このクラスにはstatic classとフラグを立てる可能性があります.MustInheritは、基本的に静的なクラスでも、人がインスタンスを作成しないようにするために追加された可能性が最も高いです。

+0

VBでクラスを宣言するモジュールは、基本的にC#で静的宣言しています。それはVB7以来存在しています。 –

0

C#ではクラスは静的(=共有)として宣言することができ、私はVB.NETはそれが

関連する問題