Какая польза от общей переменной в VB.NET? - PullRequest
31 голосов
/ 05 марта 2009

Какая польза от переменной Shared в VB.NET?

Ответы [ 3 ]

29 голосов
/ 05 марта 2009

Ключевое слово "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

29 голосов
/ 05 марта 2009

Это то же самое, что static в C # и большинстве других языков. Это означает, что каждый объект в классе использует одну и ту же копию переменной, свойства или метода. При использовании метода как статического вам не нужен экземпляр объекта.

MyClass.DoSomething()

вместо

Dim oObject as New MyClass()
oObject.DoSomething()
5 голосов
/ 05 марта 2009

Просто всякий раз, когда вы хотите иметь один экземпляр переменной для всего приложения, совместно используемый объектами вашего класса. Вместо 1 на объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...