1

私はVB.NETクラス(私が書いていない)を見ています.3つのメソッドがあり、 MustInherit( C#では)abstractと定義されています。クラスにはプロパティやフィールドはなく、3 つのメソッドだけです。オブジェクト指向の観点から、これは意味がありますか?Sharedstatic

それを作ることによってMustInherit、あなたは本質的にこのクラスのインスタンスを作成できないと言っているからです - あなたはそれから継承し、派生クラスのインスタンスを作成しなければなりません。しかし、すべてのメソッドが共有されているため、親クラスのインスタンスを実際に作成することは決してないため、は役に立ちMustInheritません。マークを付けに、必要なときにいつでも継承することもMustInheritできます。

この方法でクラスを作成することが理にかなっている状況はありますか?

4

3 に答える 3

2

他の人が言っているように、彼らは本当にC#静的クラスを望んでいたようです。VBの「静的」に相当するものは「共有」ですが、VBでクラスを「共有」としてマークすることはできません。違いは、誰かがこのクラスから継承してからインスタンスを作成できることです。C#静的クラスは封印されています。

彼らがすべきことは、を使用することModuleです。VBModuleとC#の静的クラスは実質的に同じです。メンバーはインスタンスではなく型に関連付けられており、それらから継承することはできません。

于 2009-06-06T01:04:32.433 に答える
0

OOの観点からは、これはあまり意味がありません。

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

于 2009-06-06T00:55:41.763 に答える
0

C#では、クラスを静的(=共有)として宣言できますが、VB.NETではそれが許可されていないと思います。そのため、回避策として、クラスは抽象(MustInherit)とマークされ、インスタンス化されません。

于 2009-06-06T00:55:54.307 に答える