Sdílené (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 Přepíše (Visual Basic), Overridable (Visual Basic), NotOverridable (Visual Basic), MustOverride (Visual Basic), nebo Statické (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 Příkaz const (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:
Viz také
Referenční dokumentace
Koncepty
Životnost v jazyce Visual Basic
Procedury v jazyce Visual Basic