【发布时间】:2010-09-13 05:53:17
【问题描述】:
正如最近的question 和answer 中所述,您不能从静态类继承。如何执行与 VB.NET 中的静态类相关的规则?由于该框架在 C# 和 VB 之间兼容,因此有办法将类标记为静态是有道理的,但似乎没有办法。
【问题讨论】:
正如最近的question 和answer 中所述,您不能从静态类继承。如何执行与 VB.NET 中的静态类相关的规则?由于该框架在 C# 和 VB 之间兼容,因此有办法将类标记为静态是有道理的,但似乎没有办法。
【问题讨论】:
模块 == 静态类
如果你只想要一个不能继承的类,使用NotInheritable 类;但它不会是静态/共享的。您可以将所有方法、属性和成员标记为 Shared,但这与 C# 中的静态类并不完全相同,因为它不是由编译器强制执行的。
如果您确实希望 VB.Net 等效于 C# 静态类,请使用 Module。它不能被继承,所有成员、属性和方法都是静态/共享的。
【讨论】:
差不多了。你也必须防止实例化。
NotInheritable Class MyStaticClass
''' <summary>
''' Prevent instantiation.
''' </summary>
Private Sub New()
End Sub
Public Shared Function MyMethod() As String
End Function
End Class
【讨论】:
您可以在 vb.net 中创建静态类。解决办法是
Friend NotInheritable Class DB
Public Shared AGE As Integer = 20
End Class
AGE变量是public static,你可以像这样在其他代码中使用它
Dim myage As Integer = DB.AGE
朋友 = 公开,NotInheritable = 静态
【讨论】:
如果你只想创建一个不能继承的类,在 C# 中可以使用 Sealed,在 VB.Net 中使用 NotInheritable。
静态的 VB.Net 等效项是共享的。
【讨论】:
从 CLR 的角度来看,C# 静态类只是“密封”和“抽象”类。你不能创建一个实例,因为它是抽象的,你不能从它继承,因为它是密封的。剩下的只是一些编译器魔法。
【讨论】: