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

Как указано в недавнем question и , вы не можете наследовать от статический класс. Как применять правила, которые соответствуют статическим классам внутри VB.NET? Поскольку структура совместима между С# и VB, было бы разумно, что существует способ отметить статический класс, но, похоже, не существует способа.

Ответ 1

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

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

Если вы действительно хотите, чтобы VB.Net соответствовал статическому классу С#, используйте Module. Он не может быть унаследован, и все члены, свойства и методы являются статическими/общими.

Ответ 2

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

NotInheritable Class MyStaticClass

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

    End Sub

    Public Shared Function MyMethod() As String

    End Function

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

См:
MSDN - Статические классы и члены статических классов

Ответ 3

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

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

Ответ 4

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

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

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

 Dim myage As Integer = DB.AGE

Друг = общедоступный, NotInheritable = статический

Ответ 5

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

Ответ 6

Я думаю, что эквивалент VB.NET static равен Shared.