Sdílet prostřednictvím


Rozsah v jazyce Visual Basic

Oboru prohlášených prvku je sada všech kód, který na ni můžete odkázat bez opravňujících jeho název nebo zpřístupnění prostřednictvím Imports – příkaz (obor názvů a typ rozhraní .NET).Prvek může mít obor na jednu z následujících úrovní:

Úroveň

Description

Rozsah blok

K dispozici pouze v rámci kód blokovat, v němž je deklarován

Postup oboru

K dispozici v rámci postupu, který je deklarován veškerý kód

Rozsah modulu

K dispozici veškerý kód v modulu, třídy nebo struktury, která je deklarována

Obor názvů

K dispozici v oboru názvů, který je deklarován veškerý kód

Tyto úrovně oboru pokrok od nejužšího (Blokovat) k co nejširší (oboru), kde zpomalit se rozumí nejmenší sadu kód, který může odkazovat na prvek bez kvalifikace.Další informace naleznete v tématu "Úrovně obor" na této stránce.

Určení rozsahu a definování proměnných

Můžete určit rozsah prvek při jeho deklaraci.Obor může záviset na těchto faktorech:

  • Oblast (blok, postup, modul, třídy nebo struktury), ve kterém deklarovat prvek

  • Obor názvů obsahující prohlášení prvku

  • Úroveň přístupu, kterou deklarujete prvku

Pečlivě při definování proměnných se stejným názvem, ale jiný obor, protože to může vést k neočekávaným výsledkům.Další informace naleznete v tématu Odkazy na deklarované elementy (Visual Basic).

Úrovně oboru

Je k dispozici v celé oblasti, ve které deklarovat je programovací element.Veškerý kód regionu odkazovat na prvek bez opravňujících jeho název.

Rozsah blok

Blok je sada příkazů, které jsou uzavřeny zahájení a ukončení prohlášení příkazů, jako například:

  • Do a Loop

  • ForEach andNext

  • If a End If

  • Select a End Select

  • SyncLock a End SyncLock

  • Try a End Try

  • While a End While

  • With a End With

Pokud deklarujete proměnnou uvnitř bloku, můžete je použít pouze v rámci bloku.V následujícím příkladu oboru celočíselná proměnná cube je blok mezi If a End If, již se mohou vztahovat k cube při spuštění prochází z bloku.

If n < 1291 Then
    Dim cube As Integer
    cube = n ^ 3
End If

[!POZNÁMKA]

I když je omezeno na blok rozsah proměnné, její životnost je stále celý postup.Blok zadáte více než jednou během postupu, každá proměnná bloku zachová původní hodnotu.Chcete-li se vyhnout neočekávaným výsledkům v takovém případě je doporučeno inicializovat proměnné bloku na začátku bloku.

Postup oboru

Prvek deklarované uvnitř procedury není k dispozici mimo tento postup.Lze použít pouze postup, který obsahuje prohlášení.Na této úrovni jsou také známé jako místní proměnné.Deklarování s Dim – příkaz (Visual Basic), s nebo bez Static (Visual Basic) klíčové slovo.

Postup a blok obor úzce souvisí.Pokud deklarujete proměnnou uvnitř procedury, ale mimo jakékoli blok v rámci postupu si můžete představit proměnné jako s rozsahem blok, kde je blok celý postup.

[!POZNÁMKA]

Všechny místní prvky, i když jsou Static proměnné, jsou soukromé postup, ve kterém se zobrazí.Nelze deklarovat prvku pomocí Public (Visual Basic) klíčové slovo v rámci procedury.

Rozsah modulu

Pro pohodlí jednoho slova úroveň modulu se použije i pro moduly tříd a struktur.Prvky na této úrovni můžete deklarovat umístěním prohlášení prohlášení mimo jakýkoli postup nebo blok avšak v modulu, třídy nebo struktury.

Když prohlášení na úrovni modulu, určuje úroveň přístupu, kterou zvolíte obor.Obor názvů obsahující modul, třídy nebo struktury také ovlivňuje obor.

Prvky, které můžete deklarovat Private (Visual Basic) úroveň přístupu jsou k dispozici všechny procedury v modulu, ale není žádný kód v jiného modulu.Dim Prohlášení na úrovni modulu výchozí Private -li používat klíčová slova úrovně přístupu.Však můžete provádět úroveň oboru a přístup patrnější pomocí Private klíčové slovo v Dim prohlášení.

V následujícím příkladu všechny procedury definované v modulu se mohou vztahovat k proměnné řetězce strMsg.Při druhém postupu se zobrazí obsah proměnné řetězce strMsg v dialogovém okně.

' Put the following declaration at module level (not in any procedure).
Private strMsg As String
' Put the following Sub procedure in the same module.
Sub initializePrivateVariable()
    strMsg = "This variable cannot be used outside this module."
End Sub
' Put the following Sub procedure in the same module.
Sub usePrivateVariable()
    MsgBox(strMsg)
End Sub

Obor názvů

Pokud deklarujete prvku v úrovni pomocí modulu Friend (Visual Basic) nebo Public (Visual Basic) klíčové slovo, bude k dispozici pro všechny procedury v celém oboru názvů, ve kterém je deklarována prvek.S následující změnu v předchozím příkladu řetězcové proměnné strMsg lze uvedené kódu kdekoli v oboru názvů své prohlášení.

' Include this declaration at module level (not inside any procedure).
Public strMsg As String

Obor názvů obsahuje vnořené obory názvů.K dispozici v oboru názvů prvku je také k dispozici v oboru názvů, všech vnořených uvnitř daného oboru názvů.

Pokud projekt neobsahuje žádné Namespace – příkazs, v projektu je vše ve stejném oboru názvů.V tomto případě oboru názvů lze představit jako rozsah projektu.Publicprvky v modulu, třídy nebo struktury jsou k dispozici projektu odkazující na jejich projektu.

Volba oboru

Při deklarování proměnné je by mějte na paměti následující body při výběru svého oboru.

Výhody lokální proměnné

Místní proměnné jsou vhodná pro jakoukoli dočasné výpočet z následujících důvodů:

  • Zabránění konfliktu názvu. Místní názvy proměnných nejsou náchylné ke konfliktu.Můžete například vytvořit několik různých postupů, obsahující proměnnou s názvem intTemp.Jako každý dlouhý intTemp je deklarován jako místní proměnné každého postupu rozpozná pouze své vlastní verzi z intTemp.Jeden postupu můžete změnit hodnotu v jeho místních intTemp bez ovlivnění intTemp proměnných v jiné postupy.

  • Spotřeba paměti. Místní proměnné spotřebovat paměti pouze jejich postup je spuštěn.Jejich paměti uvolněn postup vrátí volající kód.Naopak Shared (Visual Basic) a Static (Visual Basic) proměnné spotřebovávají určité prostředky paměti, dokud aplikace se zastaví, tak je pouze v případě potřeby použít.Proměnné instance spotřebovávat paměť při jejich instance nadále existovat, což je méně efektivní než místní proměnné, ale potenciálně efektivnější než Shared nebo Static proměnné.

Minimalizace oboru

Obecně při deklarování jakoukoli proměnnou nebo konstantu, je dobré praxe tak, aby jako postačující obor programování (rozsah blok je nejužším).To pomáhá šetřit paměť a minimalizuje pravděpodobnost kódu chybně odkazující na chybné proměnné.Podobně by deklarování proměnné se Static (Visual Basic) případě, že je nezbytné zachovat její hodnotu mezi volání procedur.

Viz také

Úkoly

Postupy: Řízení rozsahu proměnné (Visual Basic)

Koncepty

Deklarované charakteristiky elementu (Visual Basic)

Doba platnosti v jazyce Visual Basic

Úrovně přístupu v jazyce Visual Basic

Odkazy na deklarované elementy (Visual Basic)

Deklarace proměnné v jazyce Visual Basic