Jakie jest zastosowanie zmiennej Shared
w VB.NET?Jaki jest pożytek z udostępnionej zmiennej w VB.NET?
Odpowiedz
Jest to to samo, co static
w języku C# i większości innych języków. Oznacza to, że każdy obiekt w klasie używa tej samej kopii zmiennej, właściwości lub metody. W przypadku użycia z metodą, ponieważ jest statyczna, nie potrzebujesz instancji obiektu.
MyClass.DoSomething()
zamiast
Dim oObject as New MyClass()
oObject.DoSomething()
Po prostu, gdy chcesz mieć pojedynczą instancję zmiennej dla całej aplikacji podzielone pomiędzy obiektami klasy. Zamiast 1 na obiekt.
Słowo kluczowe "Udostępnione" w VB.NET jest odpowiednikiem słowa kluczowego "static" w języku C#.
W języku VB.NET wspólne słowo kluczowe można zastosować do instrukcji Dim, Event, Function, Operator, Property i Sub w obrębie klasy; jednak w języku C# słowo kluczowe static
można zastosować zarówno do tych instrukcji w normalnej klasie, jak i na poziomie klasy, aby cała klasa stała się statyczna.
Metoda "Współdzielona" lub "statyczna" działa raczej na "typ" (to jest klasa) niż na instancję typu/klasy. Od Shared
metody (lub zmienne) działają na typ, a nie na instancję, może istnieć tylko jedna "kopia" zmiennej lub metody w przeciwieństwie do wielu kopii (po jednej dla każdej instancji) w przypadku braku wspólnego (tj. , instancja) metod lub zmiennych.
Na przykład: jeśli masz klasę, nazwijmy ją MyClass z pojedynczą niewspólną metodą o nazwie MyMethod.
Public Class MyClass
Public Sub MyMethod()
// Do something in the method
End Sub
End Class
Aby wywołać tę metodę, potrzebna jest instancja klasy w celu wywołania metody. Coś jak:
Dim myvar as MyClass = New MyClass()
myvar.MyMethod()
Jeśli metoda ta została następnie przekształcony w „wspólną” metody (poprzez dodanie „shared” kwalifikator sprawie definicji metody, nie trzeba już instancję klasy do wywołania metody
.Public Class MyClass
Public Shared Sub MyMethod()
// Do something in the method
End Sub
End Class
A potem:..
MyClass.MyMethod()
można również zobaczyć przykłady tego w samej ramy .NET na przykład, „string” typu ma wiele wspólnych metod statycznych/Ie
// 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!");
Oto dobry artykuł, który wyjaśnia dalej:
Przybliżonym odpowiednikiem klasy statycznej (Współdzielonej) w VB jest Moduł. – Antony
Pytający specificaly poprosił o wspólnych zmiennych, nie jest dzielona metod. –
Mentalnie zamień DoSomething() na Coś, aby post zastosował do zmiennych zamiast metod. – OregonGhost