Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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çalar
attributelistOpsiyonel. Bkz . Öznitelik Listesi.
accessmodifierOpsiyonel. Aşağıdakilerden biri olabilir:
Bkz. Visual Basic'te erişim düzeyleri.
SharedOpsiyonel. Bkz. Paylaşılan.
ShadowsOpsiyonel. Bkz. Gölgeler.
StaticOpsiyonel. Bkz. Statik.
ReadOnlyOpsiyonel. Bkz. Salt Okunur.
WithEventsOpsiyonel. Bunların olay oluşturabilen bir sınıfın örneklerine başvuran nesne değişkenleri olduğunu belirtir. Bkz. WithEvents.
variablelistGerekli. Bu deyimde bildirilmekte olan değişkenlerin listesi.
variable [ , variable ... ]Her
variablebirinin söz dizimi ve bölümleri vardır:variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With{[ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]Bölüm Açıklama variablenameGerekli. Değişkenin adı. Bkz. Bildirilen Öğe Adları. boundslistOpsiyonel. Bir dizi değişkeninin her boyutunun sınırlarının listesi. NewOpsiyonel. deyimi çalıştırıldığında sınıfının yeni bir örneğini Dimoluşturur.datatypeOpsiyonel. Değişkenin veri türü. WithOpsiyonel. Nesne başlatıcı listesini tanıtır. propertynameOpsiyonel. Örneğini oluşturduğunuz sınıftaki bir özelliğin adı. propinitializer= sonrasında propertynamegereklidir. Değerlendirilen ve özellik adına atanan ifade.initializerBelirtilmezse Newisteğ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 Friendve 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, StaticReadOnlyveya 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 num1 hem de num2 tamsayı olarak güçlü bir şekilde 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 Doubleiki 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 Nothingyoktur. 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ı | Hayı | Dim qty |
Option Strict kapalıysa (varsayılan), değişkeni olarak Nothingayarlanır.Açıksa Option Strict , derleme zamanı hatası oluşur. |
| Hayı | 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ü Objectalır.Kapalı ve Option Strict açıksa Option Infer derleme zamanı hatası oluşur. |
| Evet | Hayı | 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. |
| Evet | Evet | 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ü | Varsayılan değer |
|---|---|
Tüm sayısal türler (ve SBytedahilByte) |
0 |
Char |
İkili 0 |
Tüm başvuru türleri (, Stringve 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 Sharedbağlıdır.
| Yordam bildirimi | Değişken başlatıldı | Değişken mevcut olanı durdurur |
|---|---|---|
| Modülde | İşlem ilk kez çağrıldığında | 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, , WithEventsveya herhangi bir erişim değiştirici kullanamazsınızShared.
bir sağlayarak bir değişkene hangi kodun accessmodifiereriş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ü Objectolmalıdır. ile WithEventsbir dizi bildiremezsiniz. Olaylar hakkında daha fazla bilgi için bkz. Olaylar.
Uyarı
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 ifadesi.
Ö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 bakınız
- Const Deyimi
- ReDim Deyimi
- Option Explicit Bildirimi
- 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 Türler
- Anonim Tipler
- Nesne Başlatıcılar: Adlandırılmış ve Anonim Türler
- Nasıl yapılır: Nesne Başlatıcı Kullanarak Nesne Bildirme
- Yerel Tür Çıkarımı