Shared (Visual Basic)
Określa, że jeden lub więcej elementów programowania deklarowanych są skojarzone z klasy lub struktury w dużych, a nie z konkretnego wystąpienia klasy lub struktury.
Uwagi
Kiedy korzystać z udostępnionych
Członek klasy lub struktury podziału czyni go dostępnym dla każdego wystąpienia, zamiast nieudostępnionym, gdzie każde wystąpienie zachowuje swoją własną kopią.Jest to użyteczne, na przykład, jeśli wartość zmiennej ma zastosowanie do całej aplikacji.Przy deklarowaniu zmiennej za Shared, następnie uzyskać dostęp wszystkich wystąpień tej samej lokalizacji magazynu i jeśli jedno wystąpienie zmienia wartość zmiennej, zaktualizowane wartości dostępu do wszystkich wystąpień.
Udostępnianie nie zmienia poziomu dostępu, członkiem.Na przykład, członek klasy mogą być współużytkowane i prywatnych (dostępny tylko w klasie), lub która nie jest udostępniana, jak i publicznych.Aby uzyskać więcej informacji, zobacz Poziomy dostępu w Visual Basic.
Zasady
Kontekst deklaracji. Można użyć Shared tylko na poziomie modułu.Oznacza to kontekst deklaracji Shared element musi być klasy lub struktury i nie może być plikiem źródłowym, obszar nazw lub procedury.
Połączonymi modyfikatorami. Nie można określić Shared wraz z Overrides (Visual Basic), Overridable (Visual Basic), NotOverridable (Visual Basic), MustOverride (Visual Basic), lub Static (Visual Basic) w tej samej deklaracji.
Uzyskiwanie dostępu do. Dostęp udostępniony element kwalifikujących się on z jego nazwą klasy lub struktury, nie z nazwą zmiennej określonej instancji klasy lub struktury.Nawet nie trzeba utworzyć wystąpienie klasy lub strukturę, aby uzyskać dostęp do swoich członków udostępnionego.
Poniższy przykład wywołuje procedurę udostępnionego IsNaN przez Double struktury.
If Double.IsNaN(result) Then MsgBox("Result is mathematically undefined.")
Udostępnianie niejawne. Nie można użyć Shared modyfikator w Const — Instrukcja (Visual Basic), ale stałe są niejawnie udostępnione.Podobnie, nie można zadeklarować członka moduł lub interfejs Shared, ale są one niejawnie udostępnione.
Zachowanie
Magazyn. Zmienna udostępnionym lub zdarzenia jest przechowywany w pamięci tylko raz, niezależnie od tego, ile lub kilka wystąpień tworzenia klasy lub struktury.Podobnie procedura udostępnionego lub właściwość posiada tylko jeden zestaw zmiennych lokalnych.
Dostęp za pośrednictwem zmiennej instancji. Istnieje możliwość dostęp do udostępnionego elementu poprzedzenia nazwy zmiennej, która zawiera określone wystąpienie klasy lub struktury.Chociaż to zwykle działa zgodnie z oczekiwaniami, kompilator generuje komunikat ostrzegawczy i sprawia, że dostęp poprzez nazwę klasy lub struktury zamiast zmiennej.
Dostęp za pomocą wyrażenia instancji. Jeśli dostęp do udostępnionego elementu za pomocą wyrażenia, które zwraca wystąpienie klasy lub struktury, kompilator sprawia, że dostęp poprzez nazwę klasy lub struktury zamiast wyliczaniem wyrażenia.Daje nieoczekiwane wyniki, jeśli przeznaczone wyrażenie do wykonywania innych działań, a także zwrócenie instancji.Poniższy przykład ilustruje to.
Sub main() shareTotal.total = 10 ' The preceding line is the preferred way to access total. Dim instanceVar As New shareTotal instanceVar.total += 100 ' The preceding line generates a compiler warning message and ' accesses total through class shareTotal instead of through ' the variable instanceVar. This works as expected and adds ' 100 to total. returnClass().total += 1000 ' The preceding line generates a compiler warning message and ' accesses total through class shareTotal instead of calling ' returnClass(). This adds 1000 to total but does not work as ' expected, because the MsgBox in returnClass() does not run. MsgBox("Value of total is " & CStr(shareTotal.total)) End Sub Public Function returnClass() As shareTotal MsgBox("Function returnClass() called") Return New shareTotal End Function Public Class shareTotal Public Shared total As Integer End Class
W poprzednim przykładzie kompilator generuje komunikat ostrzegawczy obu tych sytuacjach kod uzyskuje dostęp do udostępnionych zmiennej total za pośrednictwem instancji.W każdym przypadku ułatwia dostęp bezpośrednio za pośrednictwem klasy shareTotal i nie należy używać dowolnej instancji.W odniesieniu do zamierzonego wywołanie procedury returnClass, oznacza to, nie nawet generowania wywołania do returnClass, więc dodatkowe działania wyświetlanie "returnClass() funkcji o nazwie" nie jest wykonywane.
Shared Modyfikator mogą być używane w tych kontekstach:
Zobacz też
Informacje
Koncepcje
Okres istnienia w Visual Basic