Dim ekstresi (Visual Basic)

Bir veya daha fazla değişken için depolama alanı bildirir ve ayırır.

Syntax

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

Bölümler

  • attributelist

    İsteğe bağlı. Bkz. öznitelik listesi.

  • accessmodifier

    İsteğe bağlı. Aşağıdakilerden biri olabilir:

    Visual Basic erişim düzeylerinebakın.

  • Shared

    İsteğe bağlı. Bkz. paylaşılan.

  • Shadows

    İsteğe bağlı. Bkz. gölgeler.

  • Static

    İsteğe bağlı. Bkz. statik.

  • ReadOnly

    İsteğe bağlı. Bkz. ReadOnly.

  • WithEvents

    İsteğe bağlı. Bunların, olayları yükseltebileceği bir sınıfın örneklerine başvuran nesne değişkenleri olduğunu belirtir. Bkz. WithEvents.

  • variablelist

    Gereklidir. Bu bildirimde bildirildiği değişkenlerin listesi.

    variable [ , variable ... ]

    Her birinin variable aşağıdaki söz dizimi ve parçaları vardır:

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

    Bölüm Description
    variablename Gereklidir. Değişkenin adı. Bkz. tanımlanmış öğe adları.
    boundslist İsteğe bağlı. Bir dizi değişkeninin her boyutunun sınırları listesi.
    New İsteğe bağlı. Deyimin çalıştırıldığı zaman sınıfının yeni bir örneğini oluşturur Dim .
    datatype İsteğe bağlı. Değişkenin veri türü.
    With İsteğe bağlı. Nesne Başlatıcısı listesini tanıtır.
    propertyname İsteğe bağlı. Örneği yaptığınız sınıftaki bir özelliğin adı.
    propinitializer Şu tarihten sonra gereklidir propertyname =. Değerlendirilen ve özellik adına atanan ifade.
    initializer NewBelirtilmemişse, isteğe bağlıdır. Değerlendirilen ve değişken oluşturulduğunda değişkene atanan ifade.

Açıklamalar

Visual Basic derleyici, değişkenin Dim veri türünü ve değişkene hangi kodun erişebileceği gibi diğer bilgileri belirlemek için ifadesini kullanır. Aşağıdaki örnek, bir değeri tutacak bir değişken bildirir Integer .

Dim numberOfStudents As Integer

Herhangi bir veri türü veya bir numaralandırma, yapı, sınıf veya arabirim adı belirtebilirsiniz.

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

Bir başvuru türü için, New veri türü tarafından belirtilen sınıf veya yapının yeni bir örneğini oluşturmak için anahtar sözcüğünü kullanırsınız. Kullanırsanız New , bir başlatıcı ifadesi kullanmayın. Bunun yerine, varsa bağımsız değişkenleri değişkeni oluşturduğunuz sınıfın oluşturucusuna sağlarsınız.

Dim bottomLabel As New System.Windows.Forms.Label

Bir yordam, blok, sınıf, yapı veya modülde bir değişken bildirebilirsiniz. Bir kaynak dosyasında, ad alanında veya arabirimde bir değişken bildiremezsiniz. Daha fazla bilgi için bkz. bildirim bağlamları ve varsayılan erişim düzeyleri.

Modül düzeyinde belirtilen bir değişken, herhangi bir yordam dışında, bir üye değişkeni veya alanıdır. Üye değişkenleri, sınıfları, yapısı veya modülleri genelinde kapsamdadır. Yordam düzeyinde belirtilen bir değişken yerel bir değişkendir. Yerel değişkenler yalnızca kendi yordamı veya blokları içinde kapsamdadır.

Aşağıdaki erişim değiştiricileri, değişkenleri bir yordam dışında bildirmek için kullanılır: Public , Protected ,, Friend Protected Friend ve Private . Daha fazla bilgi için bkz. Visual Basic erişim düzeyleri.

DimAnahtar sözcüğü isteğe bağlıdır ve aşağıdaki değiştiricilerin herhangi birini belirtirseniz genellikle atlanır: Public ,,, Protected Friend Protected Friend , Private , Shared , Shadows , Static , ReadOnly veya WithEvents .

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

Option ExplicitAçık ise (varsayılan), derleyici kullandığınız her değişken için bir bildirim gerektirir. Daha fazla bilgi için bkz. Option Explicit deyimdir.

Bir başlangıç değeri belirtme

Bir değişkene, oluşturulduğunda bir değer atayabilirsiniz. Değer türü için, değişkene atanacak bir ifade sağlamak üzere bir Başlatıcı kullanırsınız. İfade, derleme zamanında hesaplanabilecek bir sabit olarak değerlendirilmelidir.

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

Bir başlatıcı belirtilmişse ve bir yan tümcesinde veri türü belirtilmemişse As , veri türünü başlatıcıdan çıkarsmak için tür çıkarımı kullanılır. Aşağıdaki örnekte, her ikisi de num1 num2 kesin olarak tam sayı olarak türdedir. İkinci bildirimde, tür çıkarımı tür 3 ' ten yazın.

' Use explicit typing.
Dim num1 As Integer = 3

' Use local type inference.
Dim num2 = 3

Tür çıkarımı yordam düzeyinde uygulanır. Bir sınıf, yapı, modül veya arabirimdeki bir yordamın dışında uygulanmaz. Tür çıkarımı hakkında daha fazla bilgi için bkz. Option Infer deyimleri ve Yerel tür çıkarımı.

Veri türü veya Başlatıcı belirtilmediğinde ne olacağı hakkında daha fazla bilgi için bu konunun ilerleyen kısımlarında yer alarak varsayılan veri türleri ve değerleri bölümüne bakın.

Adlandırılmış ve anonim türlerin örneklerini bildirmek için bir nesne Başlatıcısı kullanabilirsiniz. Aşağıdaki kod, sınıfının bir örneğini oluşturur Student ve özellikleri başlatmak için bir nesne Başlatıcısı kullanır.

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

Nesne başlatıcıları hakkında daha fazla bilgi için bkz. nasıl yapılır: nesne Başlatıcısı, nesne başlatıcıları: adlandırılmış ve anonim türlerve anonim türlerkullanarak nesne bildirme.

Birden çok değişken bildirme

Tek bir bildirim ifadesinde, her biri için değişken adını belirterek ve her dizi adını parantez ile izleyerek birkaç değişken bildirebilirsiniz. Birden çok değişken virgülle ayrılır.

Dim lastTime, nextTime, allTimes() As Date

Tek bir yan tümcesiyle birden fazla değişken bildirirseniz As , bu değişken grubu için bir başlatıcı sağlayamazsınız.

Farklı değişkenler için, As bildirdiğiniz her değişken için ayrı bir yan tümce kullanarak farklı veri türleri belirtebilirsiniz. Her değişken, As bölümünün sonunda karşılaşılan ilk yan tümcesinde belirtilen veri türünü alır variablename .

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

Diziler

Birden çok değer içerebilen bir diziyi tutacak bir değişken bildirebilirsiniz. Bir değişkenin bir diziyi bulundurduğunu belirtmek için, variablename parantez ile hemen izleyin. Diziler hakkında daha fazla bilgi için bkz. diziler.

Bir dizinin her boyutunun alt ve üst sınırını belirtebilirsiniz. Bunu yapmak için boundslist ayraçları içine ekleyin. Her boyut için, boundslist üst sınırı ve isteğe bağlı olarak alt sınırı belirtir. Alt sınır, sizin belirtmeksizin her zaman sıfırdır. Her dizin, üst sınır değeri ile sıfırdan farklılık gösterebilir.

Aşağıdaki iki deyim eşdeğerdir. Her ifade bir 21 öğe dizisi bildirir Integer . Diziye eriştiğinizde, dizin 0 ile 20 arasında farklılık gösterebilir.

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

Aşağıdaki ifade, türünde iki boyutlu bir dizi bildirir Double . Dizide 4 satır (3 + 1) 6 sütun (5 + 1) bulunur. Üst sınır, boyutun uzunluğunu değil, dizin için mümkün olan en yüksek değeri temsil ettiğini unutmayın. Boyutun uzunluğu üst sınır artı bir değer.

Dim matrix2(3, 5) As Double

Bir dizi 1 ile 32 arasında boyutlara sahip olabilir.

Bir dizi bildiriminde tüm sınırların boş kalmasını sağlayabilirsiniz. Bunu yaparsanız dizi, belirttiğiniz boyut sayısına sahiptir ancak başlatılmamış olur. NothingÖğelerinin en az bir kısmını başlatana kadar bir değeri vardır. DimDeyimin tüm boyutlar veya boyut yok için sınır belirtmesi gerekir.

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

Dizide birden fazla boyut varsa, boyut sayısını göstermek için parantez arasına virgül eklemeniz gerekir.

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

Dizinin boyutlarından birini-1 olarak bildirerek sıfır uzunluklu bir dizi bildirebilirsiniz. Sıfır uzunluklu bir diziyi tutan bir değişken değeri yok Nothing . Belirli ortak dil çalışma zamanı işlevleri için sıfır uzunluklu diziler gereklidir. Böyle bir diziye erişmeyi denerseniz, bir çalışma zamanı özel durumu oluşur. Daha fazla bilgi için bkz. diziler.

Bir dizinin değerlerini bir dizi değişmez değeri kullanarak başlatabilirsiniz. Bunu yapmak için başlatma değerlerini küme ayraçları () ile çevreleyin {} .

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

Çok boyutlu diziler için, her ayrı boyut için başlatma, dış boyuttaki küme ayraçları içine alınır. Öğeler satır birincil sırada belirtilmiştir.

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

Dizi değişmez değerleri hakkında daha fazla bilgi için bkz. diziler.

Varsayılan veri türleri ve değerleri

Aşağıdaki tabloda, bir deyimindeki veri türünü ve başlatıcıyı belirtmenin çeşitli birleşimlerinin sonuçları açıklanmaktadır Dim .

Veri türü belirtildi mi? Başlatıcı belirtildi mi? Örnek Sonuç
Hayır Hayır Dim qty Option Strict kapalıysa (varsayılan), değişkeni olarak ayarlanır Nothing .

Option StrictAçık ise, bir derleme zamanı hatası oluşur.
Hayır Yes Dim qty = 5 Seçenek çıkarımı açık ise (varsayılan), değişkeni başlatıcının veri türünü alır. Bkz. Yerel tür çıkarımı.

Option InferKapalıysa ve Option Strict kapalıysa, değişken veri türünü alır Object .

Option InferKapalıysa ve açık ise Option Strict , bir derleme zamanı hatası oluşur.
Yes Hayır Dim qty As Integer Değişken, veri türü için varsayılan değer olarak başlatılır. Bu bölümün ilerleyen kısımlarında tabloya bakın.
Yes Yes Dim qty As Integer = 5 Başlatıcının veri türü belirtilen veri türüne dönüştürülebilir değilse, bir derleme zamanı hatası oluşur.

bir veri türü belirtirseniz ancak başlatıcı belirtmezseniz, Visual Basic değişkeni, veri türü için varsayılan değer olarak başlatır. Aşağıdaki tabloda varsayılan başlatma değerleri gösterilmektedir.

Veri türü Varsayılan değer
Tüm sayısal türler ( Byte ve dahil SByte ) 0
Char İkili 0
Tüm başvuru türleri ( Object , String ve tüm diziler dahil) Nothing
Boolean False
Date 1 yılın 1 Ocak 12:00 (01/01/0001 12:00:00)

Bir yapının her öğesi ayrı bir değişken gibi başlatılır. Bir dizinin uzunluğunu bildirir ancak öğelerini başlatmayın, her öğe ayrı bir değişken gibi başlatılır.

Statik yerel değişken ömrü

StaticYerel bir değişken, bildirildiği yordamın süresinden daha uzun bir yaşam süresine sahiptir. Değişkenin yaşam süresinin sınırları yordamın bildirildiği yere ve olup olmadığına bağlıdır Shared .

Yordam bildirimi Değişken başlatıldı Değişken var olanı durduruyor
Bir modülde Yordamın ilk çağrılışında Programınız yürütmeyi durduruyor
Bir sınıf veya yapıda, yordam Shared Yordamın, belirli bir örnek veya sınıf ya da yapının kendisindeki ilk kez çağrılması Programınız yürütmeyi durduruyor
Bir sınıf veya yapıda, yordam Shared Yordamın belirli bir örnek üzerinde ilk çağrılışında Örnek, atık toplama (GC) için bırakıldığında

Öznitelikler ve değiştiriciler

Öznitelikleri, yerel değişkenlere değil yalnızca üye değişkenlerine uygulayabilirsiniz. Bir öznitelik, bilgileri derlemenin meta verilerine katkıda bulunur ve bu, yerel değişkenler gibi geçici depolama için anlamlı değildir.

Modül düzeyinde, Static üye değişkenlerini bildirmek için değiştiricisini kullanamazsınız. Yordam düzeyinde,,,, Shared Shadows ReadOnly WithEvents veya herhangi bir erişim değiştiricilerini yerel değişkenleri bildirmek için kullanamazsınız.

Bir değişkene hangi kodun erişebileceğini belirtebilirsiniz accessmodifier . Sınıf ve modül üye değişkenleri (herhangi bir yordam dışında), varsayılan olarak özel erişim ve yapı üye değişkenlerini genel erişime varsayılan olarak sağlar. Erişim değiştiricilerini kullanarak erişim düzeylerini ayarlayabilirsiniz. Yerel değişkenlerde erişim değiştiricilerini kullanamazsınız (bir yordam içinde).

WithEventsBir yordamın içindeki yerel değişkenlerde değil, yalnızca üye değişkenlerinde belirtebilirsiniz. Belirtirseniz WithEvents , değişkenin veri türü, değil, belirli bir sınıf türü olmalıdır Object . İle bir dizi bildiremezsiniz WithEvents . Olaylar hakkında daha fazla bilgi için bkz. Olaylar.

Not

Bir sınıf, yapı veya modülün dışındaki kodun, bir üye değişkeninin adını bu sınıf, yapı veya modülün adı ile nitelemeniz gerekir. Bir yordamın veya bloğun dışındaki kod, bu yordam veya blok içindeki herhangi bir yerel değişkene başvuramaz.

Yönetilen kaynakları serbest bırakma

.NET Framework atık toplayıcı, sizin bölüminizdeki ek kodlama yapmadan yönetilen kaynakları ortadan kaldırır. Ancak, atık toplayıcıyı beklemek yerine, yönetilen bir kaynağın elden çıkarılmasını zorlayabilirsiniz.

Bir sınıf özellikle değerli ve nadir kaynağına (veritabanı bağlantısı veya dosya tanıtıcısı gibi) sahip olursa, artık kullanımda olmayan bir sınıf örneğini temizleyebilmek için sonraki atık toplamaya kadar beklemek istemeyebilirsiniz. Bir sınıf, bir IDisposable atık toplama işleminden önce kaynakları serbest bırakmak için arabirimi uygulayabilir. Bu arabirimi uygulayan bir sınıf, Dispose değerli kaynakların hemen yayınlanmasını zorlamak için çağrılabilecek bir yöntemi ortaya koyar.

UsingDeyimi bir kaynağı alma, bir deyim kümesi yürütme ve sonra kaynağı atma sürecini otomatikleştirir. Ancak, kaynağın arabirimini uygulaması gerekir IDisposable . Daha fazla bilgi için bkz. using deyimleri.

Örnek 1

Aşağıdaki örnek, Dim çeşitli seçeneklerle deyimleri kullanarak değişkenleri bildirir.

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

Örnek 2

Aşağıdaki örnekte 1 ile 30 arasında asal sayılar listelenmektedir. Yerel değişkenlerin kapsamı kod açıklamalarında açıklanmıştır.

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

Örnek 3

Aşağıdaki örnekte, speedValue değişkeni sınıf düzeyinde bildirildi. değişkenini Private bildiren anahtar sözcüğü kullanılır. değişkenine sınıfındaki herhangi bir yordam tarafından Car erişilebilir.

' 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

Ayrıca bkz.