Udostępnij za pośrednictwem


Dim — Instrukcja (Visual Basic)

Deklaruje i przydziela miejsce dla jednego lub więcej zmiennych.

[ <attributelist> ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]] [ ReadOnly ] 
Dim [ WithEvents ] variablelist

Części

Termin

Definicja

attributelist

Opcjonalne.Zobacz listy atrybutów.

accessmodifier

Opcjonalne.Może być jedną z następujących czynności:

Zobacz Poziomy dostępu w Visual Basic.

Shared

Opcjonalne.Zobacz wspólne.

Shadows

Opcjonalne.Zobacz cienie.

Static

Opcjonalne.Zobacz statyczne.

ReadOnly

Opcjonalne.Zobacz tylko do odczytu.

WithEvents

Opcjonalne.Określa, że są to zmienne obiektów, które odwołują się do wystąpienia klasy, które można podnieść zdarzenia.Zobacz WithEvents.

variablelist

Wymagane.Lista zmiennych, które zostały zgłoszone w tej instrukcji.

variable [ , variable ... ]

Każdy variable ma następującą składnię i części:

variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With { [ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]

Część

Opis

variablename

Wymagane.Nazwa zmiennej.Zobacz Zadeklarowane nazwy elementów (Visual Basic).

boundslist

Opcjonalne.Lista granic dla każdego wymiaru zmienną tablicową.

New

Opcjonalne.Tworzy nowe wystąpienie klasy, gdy Dim instrukcja jest uruchamiana.

datatype

Opcjonalne.Typ danych zmiennej.

With

Opcjonalne.Wprowadza listę Inicjator obiektu.

propertyname

Opcjonalne.Nazwa właściwości w klasie są co wystąpienie.

propinitializer

Wymagane po propertyname =.Wyrażenie jest oceniane i przypisany do nazwy właściwości.

initializer

Jeśli opcjonalny New nie jest określony.Wyrażenie jest oceniane i przypisana do zmiennej podczas jego tworzenia.

Uwagi

Kompilator języka Visual Basic używa Dim instrukcję, aby określić typ danych zmiennej i inne informacje, takie jak kod jaki można uzyskać dostęp do zmiennej.W poniższym przykładzie deklaruje zmienną do przechowywania Integer wartość.

Dim numberOfStudents As Integer

Można określić dowolny typ danych lub nazwę wyliczenia, struktury, klasy lub interfejsu.

Dim finished As Boolean
Dim monitorBox As System.Windows.Forms.Form

Dla typu odwołania należy używać New słowo kluczowe, aby utworzyć nową instancję klasy lub struktury, która jest określona przez typ danych.Jeśli korzystasz z New, nie należy używać wyrażenia inicjatora.Zamiast tego podanych argumentów, jeśli są one wymagane do konstruktora klasy, z którego tworzysz zmienną.

Dim bottomLabel As New System.Windows.Forms.Label

Można zadeklarować zmienną w procedurze, blok, klasy, struktury lub moduł.Nie można zadeklarować zmienną w pliku źródłowym, obszar nazw lub interfejsu.Aby uzyskać więcej informacji, zobacz Kontekst deklaracji i domyślne poziomy dostępu (Visual Basic).

Zmienna, która jest zadeklarowana na poziomie modułu, poza jakiejkolwiek procedury jest zmienną lub field.Zmienne składowe są w zasięgu całej ich klasy, struktury lub moduł.Zmienna, która jest zadeklarowana na poziomie procedury jest zmienna lokalna.Zmienne lokalne są w zakresie tylko w ich procedury lub bloku.

Następujących modyfikatorów dostępu są używane do deklarowania zmiennych poza procedurą: Public, Protected, Friend, Protected Friend, i Private.Aby uzyskać więcej informacji, zobacz Poziomy dostępu w Visual Basic.

The Dim keyword is optional and usually omitted if you specify any of the following modifiers: Public, Protected, Friend, Protected Friend, Private, Shared, Shadows, Static, ReadOnly, or WithEvents.

Public maximumAllowed As Double
Protected Friend currentUserName As String
Private salary As Decimal
Static runningTotal As Integer

Jeśli Option Explicit jest na (domyślnie), kompilator wymaga deklaracji każdej zmiennej, należy użyć.Aby uzyskać więcej informacji, zobacz Option Explicit — Instrukcja (Visual Basic).

Określenie wartości początkowej

Po utworzeniu można przypisać wartość do zmiennej.Dla typu wartości, użyj Inicjator do dostarczania wyrażenie ma być przypisany do zmiennej.Wyrażenie musi być stała, która może być obliczona w czasie kompilacji.

Dim quantity As Integer = 10
Dim message As String = "Just started"

Jeśli określono inicjatorów i typ danych nie jest określony w As klauzula, wnioskowanie jest używana do rozpoznać typ danych z inicjatora.W poniższym przykładzie zarówno num1 i num2 zdecydowanie są wpisane jako liczby całkowite.W deklaracji z drugiego typu wnioskowanie ustala typ od wartości 3.

' Use explicit typing.
Dim num1 As Integer = 3

' Use local type inference.
Dim num2 = 3

Wnioskowanie stosuje się na poziomie procedury.Nie ma zastosowania poza procedurą w klasy, struktury, moduł lub interfejsu.Aby uzyskać więcej informacji na temat wnioskowanie, zobacz Option Infer — Instrukcja i Wnioskowanie o typie lokalnym (Visual Basic).

Aby dowiedzieć się, co się dzieje, gdy nie jest określony typ danych lub inicjatora, zobacz Dane domyślne typy i wartości później w tym temacie.

Można użyć Inicjator obiektu zadeklarować wystąpienia typów, nazwany i anonimowe.Poniższy kod tworzy instancję Student klasy i używa Inicjator obiektu do zainicjowania właściwości.

Dim student1 As New Student With {.First = "Michael", 
                                  .Last = "Tucker"}

Aby uzyskać więcej informacji na temat inicjatory obiektu, zobacz Porady: deklarowanie obiektu za pomocą inicjatora obiektów (Visual Basic), Inicjatory obiektów: typy nazwane i anonimowe (Visual Basic), i Typy anonimowe (Visual Basic).

DEKLARUJĄC wielu zmiennych

Można zadeklarować kilku zmiennych w instrukcji jednej deklaracji, określając nazwę zmiennej dla każdego z nich i po każdej nazwie tablicy nawiasów.Wiele zmiennych są oddzielone przecinkami.

Dim lastTime, nextTime, allTimes() As Date

W przypadku więcej niż jednej zmiennej z jednym As klauzuli, nie może dostarczyć inicjujących dla tej grupy zmiennych.

Można określić różne typy danych dla różnych zmiennych za pomocą oddzielnie w As klauzula dla każdej zmiennej, należy zadeklarować.Każda zmienna ma typ danych określony w pierwszym As klauzula napotkał po jego variablename część.

Dim a, b, c As Single, x, y As Double, i As Integer
' a, b, and c are all Single; x and y are both Double

Tablice

Można zadeklarować zmienną do przechowywania Tablica, który może przechowywać wiele wartości.Aby określić, że zmienna posiada tablicę, postępuj zgodnie z jego variablename bezpośrednio z nawiasami.Aby uzyskać więcej informacji dotyczących tablic, zobacz Tablice w Visual Basic.

Można określić dolną i górną granicę każdego wymiaru tablicy.Aby to zrobić, należy dołączyć boundslist wewnątrz nawiasów.Dla każdego wymiaru boundslist Określa górny i opcjonalnie dolne.Dolna granica jest zawsze zero, czy możesz określić czy nie.Każdy indeks może się różnić od zera, poprzez jej wartość górnej granicy.

Dwie poniższe instrukcje są równoważne.Każda instrukcja deklaruje tablicy 21 Integer elementy.Gdy dostęp do tablicy, indeks mogą różnić się od 0 do 20.

Dim totals(20) As Integer
Dim totals(0 To 20) As Integer

Poniższa instrukcja deklaruje dwuwymiarowej tablicy typu Double.Tablica ma 4 wiersze (3 + 1) 6 kolumnach (5 + 1) każdego.Należy zauważyć, że górny reprezentuje najwyższą możliwa wartość indeksu, a nie długości wymiaru.Długość wymiar jest górną granicą plus jeden.

Dim matrix2(3, 5) As Double

Tablica może mieć od 1 do 32 wymiarów.

Wszystkie granice można pozostawić puste deklaracji tablicy.Jeśli to zrobisz, tablica ma wymiary, które określisz, ale jest niezainicjowany.Ma wartość Nothing do momentu zainicjowania w co najmniej niektórych elementów.Dim Instrukcja należy określić granice dla wszystkich wymiarów lub dla nie wymiarów.

' Declare an array with blank array bounds.
Dim messages() As String
' Initialize the array.
ReDim messages(4)

Jeśli tablica zawiera więcej niż jeden wymiar, musi zawierać przecinków w nawiasach, aby wskazać liczbę wymiarów.

Dim oneDimension(), twoDimensions(,), threeDimensions(,,) As Byte

Można zadeklarować o zerowej długości tablicy oświadczając wymiary tablicy być -1.Zmienna, która posiada tablicę o zerowej długości nie ma wartość Nothing.Tablice o zerowej długości są wymagane przez niektóre typowe funkcje środowiska wykonawczego języka.Podczas próby dostępu do takiej tablicy, wystąpi wyjątek wykonania.Aby uzyskać więcej informacji, zobacz Tablice w Visual Basic.

Za pomocą literału tablicowego, można zainicjować wartości z tablicy.Aby to zrobić, otaczające wartości inicjowania z nawiasami klamrowymi ({}).

Dim longArray() As Long = {0, 1, 2, 3}

Dla tablic wielowymiarowych inicjowania dla każdego odrębnego wymiaru jest ujęte w nawiasy klamrowe w wymiarze zewnętrznym.Elementy są określone w kolejności wierszy głównych.

Dim twoDimensions(,) As Integer = {{0, 1, 2}, {10, 11, 12}}

Aby uzyskać więcej informacji na temat literały tablicowe, zobacz Tablice w Visual Basic.

Dane domyślne typy i wartości

W poniższej tabeli opisano wyniki różnych kombinacji określający typ danych i inicjator w Dim instrukcji.

Określony typ danych?

Inicjator określony?

Przykład

Wynik

Nr

Nr

Dim qty

Jeśli Opcji ścisłego jest wyłączone (domyślnie), zmienna jest ustawiona na Nothing.

Jeśli Option Strict jest włączone, wystąpi błąd kompilacji.

Nr

Tak

Dim qty = 5

Jeśli Wywnioskować opcja jest na (domyślnie), zmienna ma dane typu inicjatora.Zobacz Wnioskowanie o typie lokalnym (Visual Basic).

Jeśli Option Infer jest wyłączona i Option Strict jest wyłączony, zmienna ma typ danych Object.

Jeśli Option Infer jest wyłączona i Option Strict jest włączone, wystąpi błąd kompilacji.

Tak

Nr

Dim qty As Integer

Zmienna jest ustawiana na wartość domyślną dla typu danych.Zobacz tabelę w dalszej części tej sekcji.

Tak

Tak

Dim qty As Integer = 5

Jeśli typ danych inicjujących nie jest konwertowany na określony typ danych, występuje błąd kompilacji.

Jeśli możesz określić typ danych, ale nie określono inicjatorów, Visual Basic inicjuje zmienną na wartość domyślną dla jego typu danych.W poniższej tabeli przedstawiono domyślne wartości inicjowania.

Typ danych

Wartość domyślna

Wszystkie typy liczbowe (łącznie z Byte i SByte)

0

Char

Binarne 0

Odwołać wszystkie typy (łącznie z Object, Stringi wszystkie tablice)

Nothing

Boolean

False

Date

12: 00 AM od 1 stycznia roku, 1 (0001-01/01 12: 00: 00 AM)

Każdy element struktury jest inicjowany, tak jakby oddzielna zmienna.Jeśli zadeklarować długość tablicy, ale nie zainicjować jego elementy, każdy element jest inicjowany, tak jakby oddzielna zmienna.

Lokalnej zmiennej statycznej

A Static zmienna lokalna ma długą żywotność niż procedura, w której jest zadeklarowana.Granice życia zmiennej zależy gdzie jest zadeklarowany jako procedura i czy Shared.

Procedura zgłoszenia

Zmienna została zainicjowana

Zmienna zatrzymuje istniejących

W module

Procedura jest wywoływana po raz pierwszy

Kiedy program zatrzymuje wykonywanie

W klasie lub strukturze procedura jestShared

Przy pierwszym wywołaniu procedury na konkretne wystąpienie albo na klasy lub struktury, sam

Kiedy program zatrzymuje wykonywanie

W klasie lub strukturze nie jest procedurąShared

Przy pierwszym wywołaniu procedury na konkretne wystąpienie

Kiedy wystąpienie jest dopuszczone do wyrzucania elementów bezużytecznych (GC)

Atrybuty i modyfikatorów

Atrybuty można zastosować tylko do zmiennych, a nie do zmiennych lokalnych.Atrybut przyczynia się informacje z zestawu metadanych, który nie ma sensu do tymczasowego przechowywania danych takich jak zmienne lokalne.

Na poziomie modułu, nie można użyć Static modyfikator do deklaracji Członkowskich zmiennych.Na poziomie procedury, nie można użyć Shared, Shadows, ReadOnly, WithEvents, lub dostępu do żadnych modyfikatorów do deklarowania zmiennych lokalnych.

Można określić, jaki kod można uzyskać dostęp do zmiennej, podając accessmodifier.Klasy i moduł domyślne zmienne (poza jakąkolwiek procedurą) Członkowskie prywatny dostęp do i domyślnie zmienne Członkowskie struktury publicznego dostępu.Można dostosować ich poziomy dostępu za pomocą modyfikatorów dostępu.Nie można używać modyfikatorów dostępu do zmiennych lokalnych (wewnątrz procedury).

Można określić WithEvents tylko na zmienne składowe, a nie na zmiennych lokalnych wewnątrz procedury.Jeśli określisz WithEvents, typ danych zmiennej musi być typu określonej klasy, nie Object.Nie można zadeklarować tablicę z WithEvents.Aby uzyskać więcej informacji dotyczących zdarzeń, zobacz Zdarzenia (Visual Basic).

[!UWAGA]

Kod poza klasą, strukturą lub moduł musi kwalifikować się nazwa zmienna członka z nazwą tej klasy, struktury lub moduł.Kod poza procedurą lub blok nie może odwoływać się do zmiennych lokalnych w ramach tej procedury lub bloku.

Zwalnianie zasobów zarządzanych

.NET Framework garbage collector zbywa zarządzanych zasobów bez żadnych dodatkowych kodowania z Twojej strony.Można jednak wymusić usuwania zarządzanego zasobu zamiast czekać na garbage collector.

Jeśli klasa posiada na szczególnie cenne i ograniczonych zasób (na przykład uchwyt pliku lub połączenia bazy danych), nie chcesz czekać, aż do następnego bezużytecznych oczyścić wystąpienie klasy, która nie jest już w użyciu.Klasa może realizować IDisposable interfejsu w sposób, aby zwolnić zasoby przed kolekcji garbage.Opisuje klasę, która implementuje interfejs Dispose metodę, która może być wywoływana wymusić cenne zasoby, aby natychmiast zwolnione.

Using Instrukcja automatyzuje proces pozyskiwania zasobu, wykonywanie zestaw instrukcji, i następnie usuwania zasobu.Jednakże, zasób musi implementować IDisposable interfejsu.Aby uzyskać więcej informacji, zobacz Using — Instrukcja (Visual Basic).

Przykład

W poniższym przykładzie deklaruje zmienne za pomocą Dim instrukcji z różnych opcji.

' Declare and initialize a Long variable. 
Dim startingAmount As Long = 500

' Declare a variable that refers to a Button object, 
' create a Button object, and assign the Button object 
' to the variable. 
Dim switchButton As New System.Windows.Forms.Button

' Declare a local variable that always retains its value, 
' even after its procedure returns to the calling code. 
Static totalSales As Double 

' Declare a variable that refers to an array. 
Dim highTemperature(31) As Integer 

' Declare and initialize an array variable that 
' holds four Boolean check values. 
Dim checkValues() As Boolean = {False, False, True, False}

Poniższy przykład wyświetla liczby od 1 do 30.Zakres zmiennych lokalnych jest opisany w komentarzach do kodu.

Public Sub ListPrimes()
    ' The sb variable can be accessed only 
    ' within the ListPrimes procedure. 
    Dim sb As New System.Text.StringBuilder()

    ' The number variable can be accessed only 
    ' within the For...Next block.  A different 
    ' variable with the same name could be declared 
    ' outside of the For...Next block. 
    For number As Integer = 1 To 30
        If CheckIfPrime(number) = True Then
            sb.Append(number.ToString & " ")
        End If 
    Next

    Debug.WriteLine(sb.ToString)
    ' Output: 2 3 5 7 11 13 17 19 23 29 
End Sub 


Private Function CheckIfPrime(ByVal number As Integer) As Boolean 
    If number < 2 Then 
        Return False 
    Else 
        ' The root and highCheck variables can be accessed 
        ' only within the Else block.  Different variables 
        ' with the same names could be declared outside of 
        ' the Else block. 
        Dim root As Double = Math.Sqrt(number)
        Dim highCheck As Integer = Convert.ToInt32(Math.Truncate(root))

        ' The div variable can be accessed only within 
        ' the For...Next block. 
        For div As Integer = 2 To highCheck
            If number Mod div = 0 Then 
                Return False 
            End If 
        Next 

        Return True 
    End If 
End Function

W poniższym przykładzie speedValue zmienna jest zadeklarowana na poziomie klasy.Private Jest użyć słowa kluczowego, aby zadeklarować zmienną.Zmienna jest możliwy przez dowolną procedurę w Car klasy.

' Create a new instance of a Car. 
Dim theCar As New Car()
theCar.Accelerate(30)
theCar.Accelerate(20)
theCar.Accelerate(-5)

Debug.WriteLine(theCar.Speed.ToString)
' Output: 45
Public Class Car
    ' The speedValue variable can be accessed by 
    ' any procedure in the Car class. 
    Private speedValue As Integer = 0

    Public ReadOnly Property Speed() As Integer 
        Get 
            Return speedValue
        End Get 
    End Property 

    Public Sub Accelerate(ByVal speedIncrease As Integer)
        speedValue += speedIncrease
    End Sub 
End Class

Zobacz też

Zadania

Porady: deklarowanie obiektu za pomocą inicjatora obiektów (Visual Basic)

Informacje

Const — Instrukcja (Visual Basic)

ReDim — Instrukcja (Visual Basic)

Option Explicit — Instrukcja (Visual Basic)

Option Infer — Instrukcja

Option Strict — Instrukcja

Strona kompilowania, Projektant projektu (Visual Basic)

Koncepcje

Deklaracja zmiennej w Visual Basic

Inicjatory obiektów: typy nazwane i anonimowe (Visual Basic)

Typy anonimowe (Visual Basic)

Inicjatory obiektów: typy nazwane i anonimowe (Visual Basic)

Wnioskowanie o typie lokalnym (Visual Basic)

Inne zasoby

Tablice w Visual Basic