1

MustInherit我正在查看一个声明(abstract我相信在 C# 中)的 VB.NET 类(我没有编写),它具有三个方法,所有这些方法都定义为Sharedstatic在 C# 中)。类中没有属性或字段 - 只有三个方法。从 OO 的角度来看,这有意义吗?

我的想法是否定的,因为通过 make 它MustInherit,您实际上是在说您不能创建此类的实例 - 您必须从它继承并创建派生类的实例。但是由于所有方法都是共享的,所以无论如何你永远不会真正创建父类的实例,所以MustInherit没有好处。你最好不要标记它MustInherit,只要你愿意就从它继承。

是否存在以这种方式创建类有意义的情况?

4

3 回答 3

2

正如其他人所说,听起来他们真的想要一个 C# 静态类。VB 的“静态”等价于“共享”,但不能在 VB 中将类标记为“共享”。不同之处在于有人可以从这个类继承然后创建一个实例。C# 静态类是密封的。

他们应该做的是使用Module. VBModule和 C# 静态类实际上是相同的:成员与类型相关联,而不是与实例相关联,并且您不能从它们继承。

于 2009-06-06T01:04:32.433 回答
0

从 OO 的角度来看,这没有多大意义。

但是,VB 没有办法像 C# 那样将类标记为 Shared。在 C# 中,您可能会将此类标记为static class- MustInherit 很可能是为了防止人们创建它的实例而添加的,即使它基本上是一个静态类。

于 2009-06-06T00:55:41.763 回答
0

在 C# 中,可以将类声明为静态(= Shared),我认为 VB.NET 不允许这样做,因此作为一种解决方法,它被标记为抽象(MustInherit),因此它永远不会被实例化

于 2009-06-06T00:55:54.307 回答