Ключевое слово "Shared" в VB.NET является эквивалентом ключевого слова "static" в C #.
В VB.NET ключевое слово Shared может применяться к операторам Dim, Event, Function, Operator, Property и Sub в классе; однако в C # ключевое слово static
может применяться как к этим операторам внутри обычного класса, так и на уровне класса, чтобы сделать весь класс статическим.
«Общий» или «статический» метод действует на «тип» (то есть на класс), а не на экземпляр типа / класса. Поскольку Shared
методы (или переменные) воздействуют на тип, а не на экземпляр, всегда может быть только одна «копия» переменной или метода, в отличие от множества копий (по одной для каждого экземпляра) в случае нераспространения (например, экземпляр) методы или переменные.
Например: если у вас есть класс, давайте назовем его MyClass с единственным необщедоступным методом MyMethod.
Public Class MyClass
Public Sub MyMethod()
' Do something in the method
End Sub
End Class
Чтобы вызвать этот метод, вам понадобится экземпляр класса для вызова метода. Что-то вроде:
Dim myvar As MyClass = New MyClass()
myvar.MyMethod()
Если этот метод затем был превращен в «общий» метод (добавив квалификатор «Shared» в определение метода, вам больше не нужен экземпляр класса для вызова метода.
Public Class MyClass
Public Shared Sub MyMethod()
' Do something in the method
End Sub
End Class
А потом:
MyClass.MyMethod()
Примеры этого также можно увидеть в самой платформе .NET. Например, тип «string» имеет много статических / общих методов. * Т.е. 1023 *
' Using an instance method (i.e. Non-shared) of the string type/class.
Dim s As String = "hello"
s.Replace("h", "j")
' Using a static/shared method of the string type/class.
s = String.Concat(s, " there!");
Вот хорошая статья, которая объясняет это далее:
Общие члены и члены экземпляра в VB.NET