Udostępnij za pośrednictwem


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:

Instrukcja Dim

Oświadczenie zdarzeń

Funkcja instrukcji

Instrukcja operatora

Właściwość instrukcji

Instrukcja Sub

Zobacz też

Informacje

Shadows (Visual Basic)

Static (Visual Basic)

Koncepcje

Okres istnienia w Visual Basic

Procedury w Visual Basic

Inne zasoby

Struktury (Visual Basic)

Obiekty i klasy w Visual Basic