Что такое переменная Shared
в VB.NET?
Что такое использование общей переменной в VB.NET?
Ответ 1
Это то же самое, что и static
в С# и большинстве других языков. Это означает, что каждый объект класса использует одну и ту же копию переменной, свойства или метода. При использовании с методом, поскольку он является статичным, вам не нужен экземпляр объекта.
MyClass.DoSomething()
а не
Dim oObject as New MyClass()
oObject.DoSomething()
Ответ 2
Ключевое слово "Shared" в VB.NET эквивалентно "статическому" ключевому слову в С#.
В VB.NET ключевое слово Shared можно применять к операторам Dim, Event, Function, Operator, Property и Sub внутри класса; однако в С# ключевое слово static
может применяться как к этим операторам в нормальном классе, так и на уровне класса, чтобы сделать весь класс статическим.
A "Общий" или "статический" метод действует на "тип" (то есть на класс), а не на экземпляр типа/класса. Поскольку 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()
Если этот метод затем был превращен в "общий" метод (добавив в определение метода "Общий" классификатор, вам больше не нужен экземпляр класса для вызова метода.
Public Class MyClass
Public Shared Sub MyMethod()
// Do something in the method
End Sub
End Class
И затем:
MyClass.MyMethod()
Вы также можете увидеть примеры этого в самой платформе .NET. Например, тип "string" имеет много статических/общих методов. То есть.
// 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!");
Вот хорошая статья, которая объясняет это далее:
Ответ 3
Просто, когда вы хотите иметь единственный экземпляр переменной для всего приложения, разделяемый между объектами вашего класса. Вместо 1-на-объект.