Sdílet prostřednictvím


Dim – příkaz (Visual Basic)

Deklaruje a vyhrazuje úložný prostor pro jednu nebo více proměnných.

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

Části

Termín

Definice

attributelist

Nepovinné.Viz seznam atributů.

accessmodifier

Nepovinné.Může být jeden z následujících:

Viz téma Úrovně přístupu v jazyce Visual Basic.

Shared

Nepovinné.Viz sdíleného.

Shadows

Nepovinné.Viz stíny.

Static

Nepovinné.Viz statické.

ReadOnly

Nepovinné.Viz ReadOnly.

WithEvents

Nepovinné.Určuje, že tyto objektové proměnné odkazující na instance třídy, která mohou vyvolat události.Viz WithEvents.

variablelist

Povinné.Seznam proměnné deklarované v tomto prohlášení.

variable [ , variable ... ]

Každý variable má následující syntaxe a částí:

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

Část

Description

variablename

Povinné.Název proměnné.Viz téma Deklarované názvy elementu (Visual Basic).

boundslist

Nepovinné.Seznam mezí jednotlivých rozměrů pole proměnné.

New

Nepovinné.Vytvoří novou instanci třídy, když Dim příkaz spustí.

datatype

Nepovinné.Datový typ proměnné.

With

Nepovinné.Uvádí seznam inicializátor objektu.

propertyname

Nepovinné.Název vlastnosti třídy vytváření instance.

propinitializer

Požadované po propertyname =.Výraz, který je vyhodnocen a přiřazen název vlastnosti.

initializer

Nepovinné, pokud New není zadána.Výraz, který je vyhodnocen a při vytvoření přiřazen proměnné.

Poznámky

Kompilátor Visual Basic používá Dim příkaz určit datový typ proměnné a další informace, například jaký kód může přistoupit proměnnou.Následující příklad deklaruje proměnnou pro uložení Integer hodnotu.

Dim numberOfStudents As Integer

Můžete zadat libovolný datový typ nebo název výčtu, struktura, třídy nebo rozhraní.

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

Pro typ odkazu použít New klíčové slovo vytvořit novou instanci třídy nebo struktury, který je určen typ dat.Použijete-li New, nepoužívejte výraz inicializátor.Pokud jsou požadovány v konstruktoru třídy, z níž vytváříte proměnné se místo toho zadat argumenty.

Dim bottomLabel As New System.Windows.Forms.Label

Můžete deklarovat proměnnou v postupu, blok, třídy, struktury nebo modul.Nelze deklarovat proměnnou ve zdrojovém souboru, obor názvů nebo rozhraní.Další informace naleznete v tématu Kontexty deklarace a výchozí úrovně přístupu (Visual Basic).

Proměnná deklarovaná na úrovni modulu mimo jakýkoli postup je členské proměnné nebo pole.Členské proměnné jsou v rozsahu celé své třídy, struktury nebo modul.Proměnná deklarovaná na úrovni procedury je místní proměnné.Místní proměnné jsou v rozsahu pouze v rámci postupu nebo bloku.

Deklarace proměnné mimo proceduru se používají následující modifikátory přístupu: Public, Protected, Friend, Protected Friend, a Private.Další informace naleznete v tématu Úrovně přístupu v jazyce 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

Pokud Option Explicit je na (výchozí) vyžaduje kompilátor prohlášení pro každou proměnnou použijete.Další informace naleznete v tématu Option Explicit – příkaz (Visual Basic).

Zadání počáteční hodnota

Můžete přiřadit hodnotu proměnné, když je vytvořen.Typ hodnoty, použijte inicializátor k zadání výrazu přiřadit proměnné.Výraz musí být konstantní, vypočtené v době kompilace.

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

Pokud je zadán inicializátor a není zadán typ dat v As klauzule, odvození typu se používá k odvození datového typu z inicializátor.V následujícím příkladu i num1 a num2 silného jako celá čísla.Odvození typu proměnné v deklaraci druhého odvodí typ z hodnoty 3.

' Use explicit typing.
Dim num1 As Integer = 3

' Use local type inference.
Dim num2 = 3

Odvození typu proměnné se vztahuje na úrovni procedury.Neplatí mimo proceduru v třídy, struktury, modulu nebo rozhraní.Další informace o odvození typu proměnné, viz Option Infer – příkaz a Odvození místního typu (Visual Basic).

Informace o důsledcích není zadán typ dat nebo inicializátor viz Výchozí datové typy a hodnoty dále v tomto tématu.

Můžete použít inicializátor objektu deklarovat instance anonymní a pojmenované typy.Následující kód vytvoří instanci Student třídy a používá k inicializaci vlastnosti inicializátor objektu.

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

Další informace o objektu inicializátory viz Postupy: Deklarace objektu pomocí inicializátoru objektu (Visual Basic), Inicializátory objektů: pojmenované a anonymní typy (Visual Basic), a Anonymní typy (Visual Basic).

Deklarování proměnných více

Můžete deklarovat několik proměnných v příkazu jedno prohlášení určující název proměnné pro každý z nich a každý název matice se závorkami.Více proměnných jsou odděleny čárkami.

Dim lastTime, nextTime, allTimes() As Date

Pokud deklarujete více proměnných s jedním As klauzule, nelze zadat inicializátor pro danou skupinu proměnných.

Můžete určit různé datové typy pro různé proměnné pomocí zvláštní As klauzuli pro každou proměnnou deklarujete.Každá proměnná má datový typ určený v prvním As klauzule došlo po jeho variablename část.

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

Matice

Můžete deklarovat proměnnou pro uložení pole, která může obsahovat více hodnot.Určit, že proměnná obsahuje pole, postupujte podle jeho variablename okamžitě se závorkami.Další informace o řadách naleznete v Pole v jazyce Visual Basic.

Dolní a horní mez každé dimenze matice můžete určit.K tomu patří boundslist v závorkách.Pro každou dimenzi boundslist Určuje horní mez a volitelně dolní mez.Dolní mez je vždy nula, zda zadat či nikoli.Každý index může lišit od nuly až jeho hodnotu horní mez.

Následující dva příkazy jsou rovnocenné.Každý příkaz deklaruje matice 21 Integer prvky.Při přístupu k pole indexu se může lišit od 0 do 20.

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

Následující příkaz deklaruje dvojrozměrné pole typu Double.Pole má 6 sloupců (5 + 1) každé 4 řádky (3 + 1).Všimněte si, že horní mez představuje nejvyšší možná hodnota indexu není délka dimenze.Délka dimenze je horní mez plus jedna.

Dim matrix2(3, 5) As Double

Pole může mít od 1 do 32 rozměrů.

Můžete ponechat všechny hranice v deklarace pole prázdné.Pokud to uděláte, má pole počet dimenzí zadané, ale není inicializována.Má hodnotu Nothing dokud inicializujete alespoň některé jeho prvky.Dim Prohlášení musí určit hranice pro všechny dimenze nebo žádné dimenze.

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

Pokud pole obsahuje více než jednu dimenzi, musí obsahovat čárky mezi závorky označující počet dimenzí.

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

Můžete deklarovat nulové délky pole prohlášením jednoho pole dimenze se -1.Proměnná, která obsahuje pole nulové délky nemá hodnotu Nothing.Některé běžné funkce modulu runtime jazyka vyžaduje pole nulové délky.Došlo k pokusu o přístup k takové pole, dojde k výjimce modulu runtime.Další informace naleznete v tématu Pole v jazyce Visual Basic.

Hodnoty matice můžete inicializovat pomocí literálové pole.Provedete obklopují inicializace hodnoty se závorkami ({}).

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

Pro vícedimenzionální pole je inicializace pro každou samostatnou dimenzi uzavřeny ve složených závorkách vnější dimenze.Prvky jsou specifikovány v hlavní řádek objednávky.

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

Další informace o literály pole, viz Pole v jazyce Visual Basic.

Výchozí datové typy a hodnoty

Následující tabulka popisuje výsledky různých kombinací určující typ dat a inicializační proceduru Dim prohlášení.

Zadaný typ dat?

Zadaný inicializační?

Příklad

Výsledek

Ne

Ne

Dim qty

Pokud Option Strict je vypnuto (výchozí) je proměnná nastavena Nothing.

Pokud Option Strict je, dojde k chybě kompilace.

Ne

Ano

Dim qty = 5

Pokud Možnost Infer je na (výchozí) typ inicializátoru proměnné přijímá data.Viz téma Odvození místního typu (Visual Basic).

Pokud Option Infer je vypnuto a Option Strict je vypnuto, přijímá proměnné datového typu Object.

Pokud Option Infer je vypnuto a Option Strict je, dojde k chybě kompilace.

Ano

Ne

Dim qty As Integer

Výchozí hodnota pro typ dat je inicializována proměnná.Viz tabulka dále v této části.

Ano

Ano

Dim qty As Integer = 5

Pokud je datový typ inicializátor převést na zadaný datový typ, dojde k chybě kompilace.

Pokud určit typ dat, ale neurčíte inicializátor, Visual Basic inicializuje proměnnou na výchozí hodnotu pro datový typ.Následující tabulka uvádí výchozí hodnoty inicializace.

Typ dat

Výchozí hodnota

Všechny číselné typy (včetně Byte a SByte)

0

Char

Binární 0

Všechny referenční typy (včetně Object, Stringa všechna pole)

Nothing

Boolean

False

Date

12: 00 AM od 1 1 roku (01/01/0001 12: 00: 00 dop.)

Každý prvek struktury je inicializován jako by šlo o samostatnou proměnnou.Délka pole deklarovat, ale neinicializuje jeho prvků, každý prvek je inicializován jako by šlo o samostatnou proměnnou.

Statické místní proměnné životnost

A Static místní proměnná má delší životnost než postup, který je deklarován.Hranice životnost proměnné závisí na kde je procedura deklarována a zda je Shared.

Postup prohlášení

Proměnná inicializována

Proměnná zastaví existující

V modulu

První postup se nazývá.

Když váš program zastaví

Třídy nebo struktury je postupShared

První postup se nazývá konkrétní instance nebo třída nebo struktura sám

Když váš program zastaví

Do třídy nebo struktury není postupShared

První postup se nazývá na konkrétní instance.

Při uvolnění instance pro uvolňování paměti (GC)

Atributy a modifikátory

Atributy lze použít pouze k členské proměnné, lokální proměnné.Atribut přispívá informace metadat sestavení, který je smysluplný pro dočasné ukládání jako lokální proměnné.

Na úrovni modulu nelze použít Static modifikátor členské proměnné deklarovat.Na úrovni procedury nelze použít Shared, Shadows, ReadOnly, WithEvents, nebo žádné modifikátory místní proměnné deklarovat.

Můžete určit, jaký kód přístup zadáním proměnné accessmodifier.Třídy a modul členské proměnné (mimo jakýkoli postup) výchozí soukromý přístup a struktury členské proměnné výchozí přístup veřejnosti.Můžete upravit jejich úrovně přístupu s modifikátory přístupu.Modifikátory přístupu nelze použít na místní proměnné (uvnitř procedury).

Můžete zadat WithEvents pouze členské proměnné, nikoli místní proměnné uvnitř procedury.Pokud zadáte WithEvents, typ dat proměnné musí typu konkrétní třídy není Object.Nelze deklarovat matici s WithEvents.Další informace o událostech naleznete v Události (Visual Basic).

[!POZNÁMKA]

Kód vně třídy, struktury nebo modul kvalifikovat název členské proměnné s názvem dané třídy, struktury nebo modul.Mimo území postup nebo bloku nelze odkazovat na všech lokálních proměnných v tomto postupu nebo blok kódu.

Uvolnění spravovaných prostředků

Uvolňování rozhraní.NET Framework odstraňuje spravovaných prostředků bez extra kódování z vaší strany.Můžete však vynutit vyřazení namísto čekání na uvolňování spravovaného prostředku.

Třída obsahuje na zvláště cenné a omezených zdrojů (například databázový soubor připojení nebo úchyt), pravděpodobně chcete-li čekat další uvolňování vyčistit instanci třídy, která je již používán.Třída může implementovat IDisposable rozhraní poskytují způsob, jak uvolnit prostředky před garbage collection.Poskytuje třídy, která implementuje rozhraní Dispose metodu, která může být volána vynutit okamžitě uvolnit cenné zdroje.

Using Prohlášení automatizuje proces získání zdroje, provádění sadu příkazů a pak disposing prostředku.Však musí implementovat zdroj IDisposable rozhraní.Další informace naleznete v tématu Using – příkaz (Visual Basic).

Příklad

Následující příklad deklaruje proměnné pomocí Dim příkaz s různé možnosti.

' 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}

Následující příklad uvádí prvočísla 1 až 30.Obor lokální proměnné je popsána v komentáře kódu.

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

V následujícím příkladu speedValue proměnná je deklarována na úrovni třídy.Private Se používá klíčové slovo deklarovat proměnné.Proměnné lze přistupovat pomocí jakéhokoli postupu v Car třídy.

' 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

Viz také

Úkoly

Postupy: Deklarace objektu pomocí inicializátoru objektu (Visual Basic)

Referenční dokumentace

Const – příkaz (Visual Basic)

ReDim – příkaz (Visual Basic)

Option Explicit – příkaz (Visual Basic)

Option Infer – příkaz

Option Strict – příkaz

Stránka Kompilovat, návrhář projektu (Visual Basic)

Koncepty

Deklarace proměnné v jazyce Visual Basic

Inicializátory objektů: pojmenované a anonymní typy (Visual Basic)

Anonymní typy (Visual Basic)

Inicializátory objektů: pojmenované a anonymní typy (Visual Basic)

Odvození místního typu (Visual Basic)

Další zdroje

Pole v jazyce Visual Basic