在VB.NET中将类标记为静态
时间:2020-03-06 14:44:51 来源:igfitidea点击:
如最近的问答中所述,我们不能从静态类继承。如何在VB.NET中强制执行与静态类一起使用的规则?由于该框架在Cand VB之间是兼容的,因此可以认为有一种方法可以将类标记为静态,但是似乎没有办法。
解决方案
模块==静态类
如果只想要一个不能继承的类,请使用NotInheritable类。但是它不是静态的/共享的。我们可以将所有方法,属性和成员标记为Shared,但这与C中的静态类不是完全一样的,因为它不是由编译器强制执行的。
如果我们确实希望vb.net等效于Cstatic类,请使用模块。它不能被继承,并且所有成员,属性和方法都是静态/共享的。
如果只想创建一个无法继承的类,则可以在C中使用Sealed,在VB.Net中使用NotInheritable。
等效于VB.Net的static是共享的。
从CLR的角度来看,Cstatic类只是"密封"类和"抽象"类。我们不能创建一个实例,因为它是抽象的,并且由于它是密封的,因此我们不能从该实例继承。剩下的只是一些编译器魔术。