2009-03-05 16 views

Odpowiedz

23

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() 
+5

Pytający specificaly poprosił o wspólnych zmiennych, nie jest dzielona metod. –

+10

Mentalnie zamień DoSomething() na Coś, aby post zastosował do zmiennych zamiast metod. – OregonGhost

5

Po prostu, gdy chcesz mieć pojedynczą instancję zmiennej dla całej aplikacji podzielone pomiędzy obiektami klasy. Zamiast 1 na obiekt.

26

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:

Shared Members and Instance Members in VB.NET

+2

Przybliżonym odpowiednikiem klasy statycznej (Współdzielonej) w VB jest Moduł. – Antony

Powiązane problemy