Маркировка класса Static in VB.NET


Как только что говорилось в недавнем вопросе и ответе, вы не можете наследовать от статического класса. Как обеспечить соблюдение правил, которые идут вместе со статическими классами внутри VB.NET? поскольку фреймворк совместим между C# и VB, было бы разумно, что будет способ отметить статический класс, но, похоже, нет способа.

5 70

5 ответов:

модуль == статический класс

Если вы просто хотите класс, который вы не можете наследовать, используйте класс NotInheritable. Но он не будет статическим / общим. Вы можете пометить все методы, свойства и члены как общие, но это не совсем то же самое, что статический класс В C#, поскольку он не применяется компилятором.

Если вы действительно хотите vb.net эквивалентно статическому классу C#, используйте модуль. Он не может быть унаследован, и все члены, свойства и методы являются статический / общий.

почти нет. Вы также должны предотвратить создание экземпляра.

NotInheritable Class MyStaticClass

    ''' <summary>
    ''' Prevent instantiation.
    ''' </summary>
    Private Sub New()

    End Sub

    Public Shared Function MyMethod() As String

    End Sub

End Class
  • Shared-это как метод статического класса.
  • NotInheritable - это как запечатанный.
  • Private New, как статический класс, не может быть создан.

посмотреть... MSDN-статические классы и статические члены класса

Если вы просто хотите создать класс, который вы не можете наследовать, в C# Вы можете использовать Sealed, а в VB.Net используйте NotInheritable.

VB.Net эквивалент статики является общим.

с точки зрения среды CLR, статический класс C# - это просто "запечатанный" и "абстрактный" класс. Вы не можете создать экземпляр, потому что он абстрактен, и вы не можете наследовать от него, так как он запечатан. Остальное-это просто какая-то магия компилятора.

вы можете создать статический класс в vb.net. решение есть

Friend NotInheritable Class DB
    Public Shared AGE As Integer = 20
End Class

переменная возраста является общедоступной статической, вы можете использовать ее в другом коде так же, как это

 Dim myage As Integer = DB.AGE

Friend = public, NotInheritable = static