Zakres w Visual Basic

Zakres zadeklarowanej elementu jest zestaw cały kod, który może odwoływać się do niego bez kwalifikujących się jego nazwa, lub udostępnianie go przez Imports — Instrukcja (.NET Namespace i Type).Element może mieć zakresu na jeden z następujących poziomów:

Poziom

Opis

Zakres bloku

Dostępne tylko w obrębie kodu zablokować, w którym jest on zadeklarowany jako

Zakres procedury

Dostępne dla całego kodu w ramach procedury, w którym jest on zadeklarowany jako

Moduł zakresu

Dostępne dla wszystkich kodu w module, klasy lub struktury, w którym jest on zadeklarowany jako

Zakres nazw

Dostępne dla całego kodu w obszarze nazw, w którym jest on zadeklarowany jako

Te poziomy zakresu postępu od najwęższego (Blokuj) do możliwie najszerszego (nazw), gdzie najwęższy zakres oznacza najmniejszy zestaw kod, który może odwoływać się do elementu bez kwalifikacji.Aby uzyskać więcej informacji zobacz "Poziomy zakres" na tej stronie.

Określenie zakresu i definiowanie zmiennych

Określić zakres elementu, kiedy to zgłosić.Zakres może zależeć od następujących czynników:

  • Region (bloku, procedury, moduł, klasy lub struktury), w którym można zadeklarować elementu

  • Obszar nazw zawierający deklarację elementu

  • Poziom dostępu, którą można zadeklarować elementu

Należy dopilnować, aby podczas definiowania zmiennych o takiej samej nazwie, ale różnym zakresie, ponieważ w ten sposób może prowadzić do nieoczekiwanych rezultatów.Aby uzyskać więcej informacji, zobacz Odwołania do elementów zadeklarowanych (Visual Basic).

Poziomy zakresu

Element programowania jest dostępna w całym regionie to zgłosić.Cały kod w tym samym regionie może odnosić się do elementu bez kwalifikujących się jego nazwa.

Zakres bloku

Blok jest zestawem sprawozdań ujęty w inicjowaniu i kończenie instrukcji deklaracji, takich jak:

  • DoiLoop

  • ForEach andNext

  • IfiEnd If

  • SelectiEnd Select

  • SyncLockiEnd SyncLock

  • TryiEnd Try

  • WhileiEnd While

  • WithiEnd With

Jeżeli deklarowana jest zmienna w bloku, można użyć go tylko w obrębie tego bloku.W poniższym przykładzie zakres zmiennej integer cube jest blok między If i End If, i już można odwoływać się do cube kiedy wykonywanie przechodzi z bloku.

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

[!UWAGA]

Nawet jeśli zasięg zmiennej jest ograniczony do bloku, jego okres istnienia jest nadal całą procedurę.Jeśli blok zostanie wprowadzony więcej niż jeden raz podczas procedury, każda zmienna bloku zachowa poprzednią wartość.Aby uniknąć nieoczekiwanych wyników, w takim przypadku, jest oddestylowany inicjowanie zmiennych bloku na początku bloku.

Zakres procedury

Element zadeklarowanych w ramach procedury nie jest dostępna poza tą procedurą.Można go używać tylko procedura zawiera deklarację.Zmienne na tym poziomie są również nazywane zmiennych lokalnych.Można zadeklarować je z Dim — Instrukcja (Visual Basic), z lub bez Static (Visual Basic) słowa kluczowego.

Procedury i blokowanie zakresu są ściśle powiązane.Jeżeli deklarowana zmienna wewnątrz procedury, ale poza każdy blok w ramach tej procedury, można traktować zmienną jako mające zakres bloku, gdzie blok jest całą procedurę.

[!UWAGA]

Wszystkie elementy lokalne, nawet jeśli są one Static prywatne dla procedury, w jakiej są wyświetlane są zmienne.Nie można zadeklarować przy użyciu dowolnego elementu Public (Visual Basic) słowa kluczowego w obrębie procedury.

Moduł zakresu

Dla wygody, pojedynczy termin poziom Moduł stosuje się jednakowo do modułów klas i struktur.Elementy na tym poziomie można zadeklarować poprzez umieszczenie instrukcji deklaracji poza z jakąkolwiek procedurę lub bloku, ale w module, klasy lub struktury.

Gdy oświadczenia na poziomie modułu wybrany poziom dostępu określa zakres.Obszar nazw, który zawiera moduł, klasy lub struktury wpływa również na zakres.

Elementy, dla których zadeklarować Private (Visual Basic) poziom dostępu są dostępne, do każdej procedury, w tym module, ale nie do dowolnego kodu do innego modułu.Dim Instrukcji na poziomie modułu domyślne, aby Private , jeśli nie używasz dowolne słowa kluczowe do poziomu dostępu.Jednakże można wprowadzać poziomu zakresu i dostęp bardziej oczywiste za pomocą Private słowa kluczowego w Dim instrukcji.

W poniższym przykładzie wszystkie procedury zdefiniowanej w module można odwołać się do zmiennej ciągu strMsg.Gdy wywoływana jest druga procedura wyświetla zawartość zmienna typu string strMsg w oknie dialogowym.

' 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

Zakres nazw

Jeśli zadeklarować elementu na poziomie przy użyciu modułu Friend (Visual Basic) lub Public (Visual Basic) słowa kluczowego, staje się dostępny dla wszystkich procedur w całej przestrzeni nazw, w którym jest zadeklarowany jako element.Z następujących zmian w poprzednim przykładzie zmienna typu string strMsg można dalej przez kod w dowolnym miejscu obszaru nazw w swojej deklaracji.

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

Zakres nazw zawiera zagnieżdżone obszarów nazw.Element dostępnych w ramach obszaru nazw jest również dostępna w dowolnym obszarem nazw, zagnieżdżone wewnątrz tego obszaru nazw.

Jeśli projekt nie zawiera żadnego Namespace — Instrukcjas, wszystko w projekcie jest w tej samej przestrzeni nazw.W przypadku zakresu nazw można traktować jako zakres projektu.Publicelementy w module, klasy lub struktury są również dostępne dla jakiegokolwiek projektu, który odwołuje się do swojego projektu.

Wybór zakresu

Przy deklarowaniu zmiennej, należy należy mieć na uwadze następujące punkty podczas wybierania jej zakresu.

Zalety zmiennych lokalnych

Zmienne lokalne są dobrym rozwiązaniem dla wszelkiego rodzaju obliczenia tymczasowych, z następujących powodów:

  • Unikanie konfliktu nazw. Nazwy zmiennych lokalnych nie są podatne na konflikt.Na przykład, można utworzyć kilka różnych procedur zawierających zmienną o nazwie intTemp.Tak długo, jak każdy intTemp jest zadeklarowana jako zmienna lokalna, każdej procedury rozpoznaje tylko własnej wersji z intTemp.Wszelkie procedury jeden można zmienić wartość w swoich lokalnych intTemp bez wpływu na intTemp zmiennych w innych procedur.

  • Zużycie pamięci. Zmienne lokalne zużywa pamięć tylko w czasie wykonywania procedury ich.Ich pamięci jest zwalniany, kiedy procedura zwraca do kodu wywołującego.Z drugiej strony Shared (Visual Basic) i Static (Visual Basic) zmiennych zużywają zasoby pamięci, aż aplikacja przestanie działać, należy więc pisać je tylko wtedy, gdy jest to konieczne.Zmienne instancji zużywa pamięci podczas ich wystąpienie w dalszym ciągu istnieje, co czyni je mniej skuteczne niż zmiennych lokalnych, ale potencjalnie bardziej efektywne niż Shared lub Static zmiennych.

Minimalizowanie zakresu

Ogólnie rzecz biorąc, deklarując dowolną zmienną lub stałą jest dobrej praktyce zakres jak najwęższej programowania (zakres bloku jest najwęższy).Pomaga zachować więcej wolnej pamięci i zmniejsza szanse błędnie odnoszące się do zmiennej niewłaściwy kod.Podobnie, należy zadeklarować zmienną jako Static (Visual Basic) tylko wtedy gdy jest niezbędne w celu zachowania jego wartość między wywołania procedury.

Zobacz też

Zadania

Porady: kontrolowanie zakresu zmiennej (Visual Basic)

Koncepcje

Zadeklarowana charakterystyka elementów (Visual Basic)

Okres istnienia w Visual Basic

Poziomy dostępu w Visual Basic

Odwołania do elementów zadeklarowanych (Visual Basic)

Deklaracja zmiennej w Visual Basic