Sdílet prostřednictvím


Shared (Visual Basic)

Určuje, že jeden nebo více prohlášených programovací prvky spojené s třídy nebo struktury obecně, nikoli s konkrétní instanci třídy nebo struktury.

Poznámky

Použití sdílené

Sdílení členem třídy nebo struktury zpřístupní každé instanci spíše než sdíleném, kde každá instance udržuje vlastní kopii.To je užitečné, například pokud hodnota proměnné platí pro celou aplikaci.Pokud deklarujete proměnnou, že se Shared, pak přístup všech instancí stejné umístění úložiště a pokud jedna instance se změní hodnota proměnné, všechny instance přístup aktualizovanou hodnotu.

Sdílení nemění úroveň přístupu člena.Například můžete sdílený člen třídy a soukromé (k dispozici pouze v rámci třídy), nebo sdíleném a veřejné.Další informace naleznete v tématu Úrovně přístupu v jazyce Visual Basic.

Pravidla

  • Prohlášení kontextu. Můžete použít Shared pouze na úrovni modulu.To znamená kontext prohlášení Shared prvek musí být třídy nebo struktury a nemůže být zdrojový soubor, obor názvů nebo postup.

  • Kombinovanými modifikátory. Nelze zadat Shared spolu s Overrides (Visual Basic), Overridable (Visual Basic), NotOverridable (Visual Basic), MustOverride (Visual Basic), nebo Static (Visual Basic) ve stejné deklaraci.

  • Přístup. Přístup sdílené prvků opravňujících jeho název třídy nebo struktury, nikoli s proměnnou název konkrétní instanci třídy nebo struktury.Ještě nemáte k vytvoření instance třídy nebo struktury přístup k sdíleným členům.

    V následujícím příkladu volá proceduru sdílené IsNaN vystavený Double struktury.

    If Double.IsNaN(result) Then MsgBox("Result is mathematically undefined.")

  • Implicitní sdílení. Nelze použít Shared modifikátor Const – příkaz (Visual Basic), ale implicitně sdílené konstanty.Podobně nelze deklarovat členem modulu nebo rozhraní se Shared, ale implicitně sdílena.

Chování

  • Úložiště. Sdílené proměnné nebo události je uložen v paměti pouze jednou bez ohledu na to, jak mnoho nebo málo instancí vytváříte své třídy nebo struktury.Podobně sdíleného řízení nebo vlastnost obsahuje pouze jednu sadu místní proměnné.

  • Přístup pomocí proměnné Instance. Je možné získat přístup k sdíleným prvek kvalifikováním názvu proměnné, která obsahuje konkrétní instanci třídy nebo struktury.Přestože to obvykle funguje podle očekávání, kompilátor generuje zprávu upozornění a umožňuje přístup pomocí názvu třídy nebo struktury namísto proměnné.

  • Přístup pomocí výrazu Instance. Jestliže sdílený prvek se přístup prostřednictvím výraz, který vrátí instanci třídy nebo struktury, provede kompilátor přístup pomocí názvu třídy nebo struktury namísto výraz.To poskytuje neočekávané výsledky, pokud určené výraz provádět jiné akce, jakož i vrácení instance.To ukazuje následující příklad.

    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
    

    V předchozím příkladu kompilátor vygeneruje zprávu s upozorněním i časy kód má přístup ke sdílené proměnné total prostřednictvím instance.V každém případě usnadňuje přístup přímo pomocí třídy shareTotal a neumožňuje používat žádné instance.Z určené volání postupem returnClass, to znamená, že ji dokonce negeneruje volání returnClass, takže není provedena další akce zobrazení "Nazývá returnClass() funkce".

Shared Modifikátor lze v těchto kontextech:

Příkazu Dim

Výpis událostí

Příkaz funkce

Operátor prohlášení

Popis vlastností

Příkaz Sub

Viz také

Referenční dokumentace

Shadows (Visual Basic)

Static (Visual Basic)

Koncepty

Doba platnosti v jazyce Visual Basic

Procedury v jazyce Visual Basic

Další zdroje

Struktury (Visual Basic)

Objekty a třídy v jazyce Visual Basic