Dim deyimi (Visual Basic)
Bir veya daha fazla değişken için depolama alanı bildirir ve ayırır.
Sözdizimi
[ <attributelist> ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]] [ ReadOnly ]
Dim [ WithEvents ] variablelist
Parça
attributelist
isteğe bağlı. Bkz. Öznitelik Listesi.
accessmodifier
isteğe bağlı. Aşağıdakilerden biri olabilir:
Bkz. Visual Basic'te erişim düzeyleri.
Shared
isteğe bağlı. Bkz. Paylaşılan.
Shadows
isteğe bağlı. Bkz. Gölgeler.
Static
isteğe bağlı. Bkz. Statik.
ReadOnly
isteğe bağlı. Bkz. Salt Okunur.
WithEvents
isteğe bağlı. Bunların olay oluşturabilen bir sınıfın örneklerine başvuran nesne değişkenleri olduğunu belirtir. Bkz. WithEvents.
variablelist
Gerekli. Bu deyimde bildirilmekte olan değişkenlerin listesi.
variable [ , variable ... ]
Her
variable
birinin söz dizimi ve bölümleri vardır:variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With
{[ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]
Bölüm Açıklama variablename
Gerekli. Değişkenin adı. Bkz. Bildirilen Öğe Adları. boundslist
isteğe bağlı. Bir dizi değişkeninin her boyutunun sınırlarının listesi. New
isteğe bağlı. deyimi çalıştırıldığında sınıfının yeni bir örneğini Dim
oluşturur.datatype
isteğe bağlı. Değişkenin veri türü. With
isteğe bağlı. Nesne başlatıcı listesini tanıtır. propertyname
isteğe bağlı. Örneğini oluşturduğunuz sınıftaki bir özelliğin adı. propinitializer
= sonrasında propertyname
gereklidir. Değerlendirilen ve özellik adına atanan ifade.initializer
Belirtilmezse New
isteğe bağlı. Değişken oluşturulduğunda değerlendirilen ve değişkenine atanan ifade.
Açıklamalar
Visual Basic derleyicisi, değişkenin Dim
veri türünü ve değişkene erişebilecek kod gibi diğer bilgileri belirlemek için deyimini kullanır. Aşağıdaki örnek, bir değeri tutmak için bir Integer
değişken bildirir.
Dim numberOfStudents As Integer
Herhangi bir veri türünü veya numaralandırma, yapı, sınıf veya arabirimin adını belirtebilirsiniz.
Dim finished As Boolean
Dim monitorBox As System.Windows.Forms.Form
Bir başvuru türü için anahtar sözcüğünü New
kullanarak veri türü tarafından belirtilen sınıfın veya yapının yeni bir örneğini oluşturursunuz. kullanıyorsanız New
, başlatıcı ifadesi kullanmazsınız. Bunun yerine, değişkenini oluşturmakta olduğunuz sınıfın oluşturucusunun bağımsız değişkenlerini (gerekirse) sağlarsınız.
Dim bottomLabel As New System.Windows.Forms.Label
Bir yordam, blok, sınıf, yapı veya modülde değişken bildirebilirsiniz. Bir kaynak dosyada, ad alanında veya arabirimde değişken bildiremezsiniz. Daha fazla bilgi için bkz . Bildirim Bağlamları ve Varsayılan Erişim Düzeyleri.
Modül düzeyinde bildirilen bir değişken, herhangi bir yordamın dışında bir üye değişkeni veya alanıdır. Üye değişkenleri sınıf, yapı veya modül boyunca kapsam içindedir. Yordam düzeyinde bildirilen değişken yerel bir değişkendir. Yerel değişkenler yalnızca kendi yordamları veya blokları kapsamındadır.
Aşağıdaki erişim değiştiricileri, bir yordamın dışındaki değişkenleri bildirmek için kullanılır: Public
, Protected
, Friend
, Protected Friend
ve Private
. Daha fazla bilgi için bkz . Visual Basic'te erişim düzeyleri.
Dim
anahtar sözcüğü isteğe bağlıdır ve genellikle şu değiştiricilerden birini belirtirseniz 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
açıksa Option Explicit
(varsayılan), derleyici kullandığınız her değişken için bir bildirim gerektirir. Daha fazla bilgi için bkz . Option Explicit Deyimi.
Başlangıç değeri belirtme
Bir değişken oluşturulduğunda değişkene değer atayabilirsiniz. Değer türü için, değişkene atanacak bir ifade sağlamak için başlatıcı kullanırsınız. İfade, derleme zamanında hesaplanabilir bir sabit olarak değerlendirilmelidir.
Dim quantity As Integer = 10
Dim message As String = "Just started"
Başlatıcı belirtilirse ve bir yan tümcesinde As
veri türü belirtilmezse, başlatıcıdan veri türünü çıkarsamak için tür çıkarımı kullanılır. Aşağıdaki örnekte hem hem de num1
num2
tamsayı olarak kesin olarak yazıldı. İkinci bildirimde tür çıkarımı, türü 3 değerinden çıkartır.
' 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 arabirimde bir yordamın dışında geçerli değildir. Tür çıkarımı hakkında daha fazla bilgi için bkz . Option Infer Deyimi ve Yerel Tür Çıkarımı.
Veri türü veya başlatıcı belirtilmediğinde ne olacağı hakkında bilgi için bu konunun devamında yer alan Varsayılan Veri Türleri ve Değerler bölümüne bakın.
Adlandırılmış ve anonim türlerin örneklerini bildirmek için bir nesne başlatıcı kullanabilirsiniz. Aşağıdaki kod bir Student
sınıfın örneğini oluşturur ve özellikleri başlatmak için bir nesne başlatıcı 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ı Kullanarak Nesne Bildirme, Nesne Başlatıcılar: Adlandırılmış ve Anonim Türler ve Anonim Türler.
Birden çok değişken bildirme
Bir bildirim deyiminde, her biri için değişken adını belirterek ve her dizi adını parantez içinde izleyerek birkaç değişken bildirebilirsiniz. Birden çok değişken virgülle ayrılır.
Dim lastTime, nextTime, allTimes() As Date
Bir As
yan tümcesiyle birden fazla değişken bildirirseniz, bu değişken grubu için başlatıcı sağlayamazsınız.
Bildirdiğiniz her değişken için ayrı bir yan tümce kullanarak farklı değişkenler için farklı As
veri türleri belirtebilirsiniz. Her değişken, bölümünden sonra variablename
karşılaşılan ilk As
yan tümcede belirtilen veri türünü alır.
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ğeri tutabilen bir diziyi tutmak için bir değişken bildirebilirsiniz. Bir değişkenin bir diziyi barındıracağını belirtmek için, hemen parantez içinde izleyin variablename
. Diziler hakkında daha fazla bilgi için bkz . Diziler.
Bir dizinin her boyutunun alt ve üst sınırlarını belirtebilirsiniz. Bunu yapmak için parantezlerin içine bir boundslist
ekleyin. Her boyut için üst boundslist
sınırı ve isteğe bağlı olarak alt sınırı belirtir. Alt sınır, belirtseniz de belirtmeseniz de her zaman sıfırdır. Her dizin sıfırdan üst sınır değerine kadar değişebilir.
Aşağıdaki iki deyim eşdeğerdir. Her deyim 21 Integer
öğeden oluşan bir dizi bildirir. Diziye eriştiğiniz zaman dizin 0 ile 20 arasında değişebilir.
Dim totals(20) As Integer
Dim totals(0 To 20) As Integer
Aşağıdaki deyim türünde Double
iki boyutlu bir dizi bildirir. Dizinin her biri 6 sütundan (5 + 1) oluşan 4 satırı (3 + 1) vardır. Üst sınır, boyutun uzunluğunu değil, dizin için mümkün olan en yüksek değeri temsil eder. Boyutun uzunluğu üst sınır artı birdir.
Dim matrix2(3, 5) As Double
Bir dizi 1 ila 32 boyuta sahip olabilir.
Dizi bildiriminde tüm sınırları boş bırakabilirsiniz. Bunu yaparsanız, dizi belirttiğiniz boyut sayısına sahiptir, ancak başlatılmamış olur. Öğelerinin Nothing
en az bir bölümünü başlatana kadar değeri vardır. Deyiminin Dim
tüm boyutlar için veya hiçbir boyut için sınırları belirtmesi gerekir.
' Declare an array with blank array bounds.
Dim messages() As String
' Initialize the array.
ReDim messages(4)
Dizinin birden fazla boyutu varsa, boyut sayısını belirtmek için ayraçlar 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 değişken değeri Nothing
yoktur. Belirli ortak dil çalışma zamanı işlevleri için sıfır uzunluklu diziler gereklidir. Böyle bir diziye erişmeye çalışırsanız, çalışma zamanı özel durumu oluşur. Daha fazla bilgi için bkz . Diziler.
Dizi değişmez değeri kullanarak bir dizinin değerlerini başlatabilirsiniz. Bunu yapmak için başlatma değerlerini ayraçlarla ({}
çevrelenin.
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 birincil satır sırasına göre belirtilir.
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 Dim
deyimde veri türünü ve başlatıcıyı belirtmenin çeşitli bileşimlerinin sonuçları açıklanmaktadır.
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 Nothing ayarlanır.Açıksa Option Strict , derleme zamanı hatası oluşur. |
Hayır | Evet | Dim qty = 5 |
Option Infer açıksa (varsayılan), değişken başlatıcının veri türünü alır. Bkz. Yerel Tür Çıkarımı. kapalıysa ve Option Strict kapalıysa Option Infer değişkeni veri türünü Object alır.Kapalı ve Option Strict açıksa Option Infer derleme zamanı hatası oluşur. |
Yes | Hayır | Dim qty As Integer |
Değişken, veri türü için varsayılan değere başlatılır. Bu bölümün devamında yer alan 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ülemezse, derleme zamanı hatası oluşur. |
Bir veri türü belirtir ancak başlatıcı belirtmezseniz, Visual Basic değişkeni veri türü için varsayılan değere başlatır. Aşağıdaki tabloda varsayılan başlatma değerleri gösterilmektedir.
Veri türü | Default value |
---|---|
Tüm sayısal türler (ve SByte dahilByte ) |
0 |
Char |
İkili 0 |
Tüm başvuru türleri (, String ve tüm diziler dahilObject ) |
Nothing |
Boolean |
False |
Date |
Yılın 1 Ocak 12:00'sinde (01/01/0001 12:00:00) |
Bir yapının her öğesi ayrı bir değişkenmiş gibi başlatılır. Bir dizinin uzunluğunu bildirir ancak öğelerini başlatmazsanız, her öğe ayrı bir değişkenmiş gibi başlatılır.
Statik yerel değişken ömrü
Static
Yerel değişkenin ömrü, bildirildiği yordamın ömründen daha uzundur. Değişkenin yaşam süresi sınırları, yordamın nerede bildirildiğine ve olup olmadığına Shared
bağlıdır.
Yordam bildirimi | Değişken başlatıldı | Değişken mevcut olanı durdurur |
---|---|---|
Modülde | Yordam ilk kez çağrılır | Programınız yürütmeyi durdurduğunda |
Bir sınıfta veya yapıda yordam şu şekildedir: Shared |
Yordam ilk kez belirli bir örnekte veya sınıf ya da yapının kendisinde çağrılır | Programınız yürütmeyi durdurduğunda |
Bir sınıfta veya yapıda yordam Shared |
Yordam belirli bir örnekte ilk kez çağrılır | Örnek çöp toplama için serbest bırakıldığında (GC) |
Öznitelikler ve değiştiriciler
Öznitelikleri yerel değişkenlere değil yalnızca üye değişkenlere uygulayabilirsiniz. Öznitelik, derlemenin meta verilerine bilgi katkıda bulunur ve bu, yerel değişkenler gibi geçici depolama için anlamlı değildir.
Modül düzeyinde, üye değişkenlerini bildirmek için değiştiriciyi Static
kullanamazsınız. Yordam düzeyinde, yerel değişkenleri bildirmek için , Shadows
, ReadOnly
, , WithEvents
veya herhangi bir erişim değiştirici kullanamazsınızShared
.
bir sağlayarak bir değişkene hangi kodun accessmodifier
erişebileceğini belirtebilirsiniz. Sınıf ve modül üye değişkenleri (herhangi bir yordamın dışında) varsayılan olarak özel erişim, yapı üyesi değişkenleri ise varsayılan olarak genel erişimdir. Erişim değiştiricileri ile erişim düzeylerini ayarlayabilirsiniz. Erişim değiştiricilerini yerel değişkenler üzerinde (bir yordamın içinde) kullanamazsınız.
Bir yordam içindeki yerel değişkenler üzerinde değil, yalnızca üye değişkenlerinde belirtebilirsiniz WithEvents
. belirtirseniz WithEvents
, değişkenin veri türü değil, belirli bir sınıf türü Object
olmalıdır. ile WithEvents
bir dizi bildiremezsiniz. Olaylar hakkında daha fazla bilgi için bkz . Olaylar.
Not
Bir sınıf, yapı veya modülün dışındaki kod, üye değişkeninin adını bu sınıf, yapı veya modülün adıyla nitelemelidir. Bir yordam veya bloğun dışındaki kod, bu yordam veya blok içindeki hiçbir yerel değişkene başvuramaz.
Yönetilen kaynakları serbest bırakma
.NET Framework çöp toplayıcısı, yönetilen kaynakları sizin tarafınıza fazladan kodlama yapmadan atılır. Ancak, çöp toplayıcıyı beklemek yerine yönetilen bir kaynağın elden çıkarılmasına zorlayabilirsiniz.
Bir sınıf özellikle değerli ve kıt bir kaynağı (veritabanı bağlantısı veya dosya tanıtıcısı gibi) barındırıyorsa, artık kullanımda olmayan bir sınıf örneğini temizlemek için bir sonraki çöp toplamaya kadar beklemek istemeyebilirsiniz. Bir sınıf, atık toplamadan önce kaynakları serbest bırakmak için bir yol sağlamak için arabirimini uygulayabilir IDisposable . Bu arabirimi uygulayan bir sınıf, değerli kaynakların hemen serbest bırakılmasına zorlamak için çağrılabilen bir Dispose
yöntemi kullanıma sunar.
deyimi Using
, bir kaynak alma, bir deyim kümesi yürütme ve ardından kaynağı yok etme işlemini otomatikleştirir. Ancak, kaynağın arabirimi uygulaması IDisposable gerekir. Daha fazla bilgi için bkz . Using Deyimi.
Örnek 1
Aşağıdaki örnek, çeşitli seçeneklerle deyimini Dim
kullanarak değişkenleri bildirir.
' Declare and initialize a Long variable.
Dim startingAmount As Long = 500
' 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ındaki asal sayılar listeilmektedir. 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şken sınıf düzeyinde bildirilir. Private
anahtar sözcüğü değişkeni bildirmek için kullanılır. değişkenine sınıfındaki Car
herhangi bir yordam tarafından 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.
- Const Deyimi
- ReDim Deyimi
- Option Explicit Deyimi
- Option Infer Deyimi
- Option Strict Deyimi
- Derleme Sayfası, Proje Tasarımcısı (Visual Basic)
- Değişken Bildirimi
- Diziler
- Nesne Başlatıcıları: Adlandırılmış ve Anonim Tipler
- Anonim Tipler
- Nesne Başlatıcıları: Adlandırılmış ve Anonim Tipler
- Nasıl yapılır: Nesne Başlatıcısı Kullanarak Nesne Bildirme
- Yerel Çıkarım