最近の question および answer で述べたように、静的クラスから継承することはできません。 VB.NET内の静的クラスに付随するルールをどのように実施しますか?フレームワークはC#とVBの間で互換性があるため、クラスを静的にマークする方法があることは理にかなっていますが、方法はないようです。
モジュール==静的クラス
継承できないクラスが必要な場合は、NotInheritableクラスを使用します。ただし、静的/共有ではありません。すべてのメソッド、プロパティ、およびメンバーをSharedとしてマークできますが、C#の静的クラスと厳密には同じではありません。コンパイラによって強制されないためです。
C#静的クラスに相当するvb.netが本当に必要な場合は、モジュールを使用します。継承することはできず、すべてのメンバー、プロパティ、およびメソッドは静的/共有です。
ほぼそこに。インスタンス化も防ぐ必要があります。
NotInheritable Class MyStaticClass
''' <summary>
''' Prevent instantiation.
''' </summary>
Private Sub New()
End Sub
Public Shared Function MyMethod() As String
End Sub
End Class
継承できないクラスを作成する場合は、C#ではSealedを使用でき、VB.NetではNotInheritableを使用できます。
静的に相当するVB.Netは共有されます。
Vb.netで静的クラスを作成できます。解決策は
Friend NotInheritable Class DB
Public Shared AGE As Integer = 20
End Class
AGE変数はpublic staticです。このように他のコードで使用できます
Dim myage As Integer = DB.AGE
Friend = public、NotInheritable = static
CLRの観点から見ると、C#静的クラスは単に「封印された」「抽象」クラスです。インスタンスは抽象的であるため作成できません。また、インスタンスは封印されているため継承できません。残りは単なるコンパイラの魔法です。