Visual Basic'deki Deyimler
Visual Basic'teki bir deyim eksiksiz bir yönergedir. Anahtar sözcükler, işleçler, değişkenler, sabitler ve ifadeler içerebilir. Her deyim aşağıdaki kategorilerden birine aittir:
Bir değişkeni, sabiti veya yordamı adlandıran ve bir veri türü de belirtebilen Bildirim Deyimleri.
Eylemleri başlatan Yürütülebilir Deyimler. Bu deyimler bir yöntem veya işlev çağırabilir ve kod blokları aracılığıyla döngü veya dallanma yapabilir. Yürütülebilir deyimler, bir değişkene veya sabite değer veya ifade atayan Atama Deyimlerini içerir.
Bu konuda her kategori açıklanmaktadır. Ayrıca bu konu başlığında, birden çok deyimin tek bir satırda nasıl birleştirildiği ve bir deyimin birden çok satır üzerinden nasıl devam etmesi anlatılmaktadır.
Bildirim deyimleri
Yordamları, değişkenleri, özellikleri, dizileri ve sabitleri adlandırmak ve tanımlamak için bildirim deyimlerini kullanırsınız. Bir programlama öğesi bildirdiğinizde, veri türünü, erişim düzeyini ve kapsamını da tanımlayabilirsiniz. Daha fazla bilgi için bkz . Bildirilen Öğe Özellikleri.
Aşağıdaki örnek üç bildirim içerir.
Public Sub ApplyFormat()
Const limit As Integer = 33
Dim thisWidget As New widget
' Insert code to implement the procedure.
End Sub
İlk bildirim deyimidir Sub
. Eşleşen End Sub
deyimiyle birlikte adlı applyFormat
bir yordam bildirir. Ayrıca öğesini applyFormat
Public
belirtir; bu, buna başvurabilen tüm kodların çağırabileceği anlamına gelir.
İkinci bildirim, veri türünü ve 33 değerini belirten sabitini limit
Integer
bildiren deyimidirConst
.
Üçüncü bildirim, değişkenini Dim
thisWidget
bildiren deyimidir. Veri türü belirli bir nesnedir, yani sınıfından oluşturulan bir nesnedir Widget
. Bir değişkeni, kullandığınız uygulamada kullanıma sunulan herhangi bir temel veri türünden veya herhangi bir nesne türünden olacak şekilde bildirebilirsiniz.
İlk Değerler
Bildirim deyimi içeren kod çalıştırıldığında, Visual Basic bildirilen öğe için gereken belleği ayırır. Öğe bir değer barındırıyorsa, Visual Basic bunu veri türü için varsayılan değere başlatır. Daha fazla bilgi için Dim Deyimi'ndeki "Davranış" bölümüne bakın.
Aşağıdaki örnekte gösterildiği gibi, bir değişkene bildiriminin bir parçası olarak bir başlangıç değeri atayabilirsiniz.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Değişken bir nesne değişkeniyse, aşağıdaki örnekte gösterildiği gibi New Operator anahtar sözcüğünü kullanarak bunu bildirdiğinizde sınıfının bir örneğini açıkça oluşturabilirsiniz.
Dim f As New FileInfo("filename")
Bir bildirim deyiminde belirttiğiniz ilk değerin, yürütme bildirim deyimine ulaşana kadar bir değişkene atanmadığını unutmayın. Bu zamana kadar değişken, veri türü için varsayılan değeri içerir.
Yürütülebilir deyimler
Yürütülebilir deyim bir eylem gerçekleştirir. Bir yordamı çağırabilir, kodun başka bir yerine dallayabilir, çeşitli deyimler arasında döngü yapabilir veya bir ifadeyi değerlendirebilir. Atama deyimi, yürütülebilir bir deyimin özel bir durumudur.
Aşağıdaki örnek, bir If...Then...Else
değişkenin değerine göre farklı kod bloklarını çalıştırmak için bir denetim yapısı kullanır. Her kod bloğunda bir For...Next
döngü belirtilen sayıda çalıştırılır.
Public Sub StartWidget(ByVal aWidget As widget,
ByVal clockwise As Boolean, ByVal revolutions As Integer)
Dim counter As Integer
If clockwise = True Then
For counter = 1 To revolutions
aWidget.SpinClockwise()
Next counter
Else
For counter = 1 To revolutions
aWidget.SpinCounterClockwise()
Next counter
End If
End Sub
If
Yukarıdaki örnekteki deyimi parametresinin clockwise
değerini denetler. değeri ise True
yöntemini aWidget
çağırırspinClockwise
. değeri ise False
yöntemini aWidget
çağırırspinCounterClockwise
. Denetim If...Then...Else
yapısı ile End If
biter.
Her For...Next
blok içindeki döngü, parametrenin değerine revolutions
eşit sayıda uygun yöntemi çağırır.
Atama deyimleri
Atama deyimleri, aşağıdaki örnekte olduğu gibi atama işlecinin (=
) sağ tarafındaki değeri alıp soldaki öğede depolamayı içeren atama işlemlerini gerçekleştirir.
v = 42
Yukarıdaki örnekte, atama deyimi değişkeninde v
42 değişmez değerini depolar.
Uygun programlama öğeleri
Atama işlecinin sol tarafındaki programlama öğesinin bir değeri kabul edebilmesi ve depolayabilmesi gerekir. Bu, ReadOnly olmayan bir değişken veya özellik ya da bir dizi öğesi olması gerektiği anlamına gelir. Atama deyimi bağlamında, böyle bir öğe bazen "sol değer" için lvalue olarak adlandırılır.
Atama işlecinin sağ tarafındaki değer, değişmez değerlerin, sabitlerin, değişkenlerin, özelliklerin, dizi öğelerinin, diğer ifadelerin veya işlev çağrılarının herhangi bir birleşiminden oluşabilen bir ifade tarafından oluşturulur. Aşağıdaki örnek bunu göstermektedir.
x = y + z + FindResult(3)
Yukarıdaki örnek değişkeninde y
tutulan değeri değişkeninde z
tutulan değere ekler ve ardından çağrısı tarafından döndürülen değeri işlevine findResult
ekler. Bu ifadenin toplam değeri daha sonra değişkeninde x
depolanır.
Atama deyimlerindeki veri türleri
Aşağıdaki örnekte gösterildiği gibi, atama işleci sayısal değerlere ek olarak değerler de atayabilir String
.
Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.
Ayrıca, aşağıdaki örnekte gösterildiği gibi bir değişmez değer veya Boolean
ifade kullanarak Boolean
da değerler atayabilirsinizBoolean
.
Dim r, s, t As Boolean
r = True
s = 45 > 1003
t = 45 > 1003 Or 45 > 17
' The preceding statements assign False to s and True to t.
Benzer şekilde, , Date
veya Object
veri türünün programlama öğelerine Char
uygun değerler atayabilirsiniz. Nesne örneğini, o örneğin oluşturulduğu sınıftan olduğu bildirilen bir öğeye de atayabilirsiniz.
Bileşik atama deyimleri
Bileşik atama deyimleri , bir programlama öğesine atamadan önce bir ifade üzerinde bir işlem gerçekleştirir. Aşağıdaki örnek, +=
işlecin sol tarafındaki değişkenin değerini sağdaki ifadenin değeriyle artıran bu işleçlerden birini gösterir.
n += 1
Yukarıdaki örnek, değerine n
1 ekler ve ardından bu yeni değeri içinde n
depolar. Aşağıdaki deyimin kısaltma eşdeğeridir:
n = n + 1
Bu tür işleçler kullanılarak çeşitli bileşik atama işlemleri gerçekleştirilebilir. Bu işleçlerin listesi ve bunlar hakkında daha fazla bilgi için bkz . Atama İşleçleri.
Birleştirme atama işleci (&=
), aşağıdaki örnekte gösterildiği gibi zaten var olan dizelerin sonuna bir dize eklemek için kullanışlıdır.
Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".
Atama Deyimlerinde Tür Dönüştürmeleri
Bir değişkene, özelliğe veya dizi öğesine atadığınız değer, bu hedef öğeye uygun bir veri türünde olmalıdır. Genel olarak, hedef öğeninkiyle aynı veri türünde bir değer oluşturmayı denemeniz gerekir. Ancak, atama sırasında bazı türler diğer türlere dönüştürülebilir.
Veri türleri arasında dönüştürme hakkında bilgi için bkz . Visual Basic'te Tür Dönüştürmeleri. Kısaca ifade etmek gerekirse, Visual Basic belirli bir türdeki bir değeri otomatik olarak genişletildiği başka bir türe dönüştürür. Genişletme dönüştürmesi, çalışma zamanında her zaman başarılı olan ve veri kaybetmeyen bir dönüştürmedir . Örneğin, Visual Basic uygun olduğunda değerini Integer
olarak genişlettiği Integer
Double
için Double
değerine dönüştürür. Daha fazla bilgi için bkz . Genişletme ve Daraltma Dönüştürmeleri.
Daraltma dönüştürmeleri (genişletmeyenler) çalışma zamanında hata veya veri kaybı riski taşır. Tür dönüştürme işlevini kullanarak açıkça bir daraltma dönüştürmesi gerçekleştirebilir veya derleyiciyi ayarlayarak Option Strict Off
örtük olarak tüm dönüştürmeleri gerçekleştirmeye yönlendirebilirsiniz. Daha fazla bilgi için bkz . Örtük ve Açık Dönüştürmeler.
Tek satıra birden çok deyim yerleştirme
Tek bir satırda iki nokta üst üste (:
) karakteriyle ayrılmış birden çok deyiminiz olabilir. Aşağıdaki örnek bunu göstermektedir.
Dim sampleString As String = "Hello World" : MsgBox(sampleString)
Bazen kullanışlı olsa da, bu söz dizimi biçimi kodunuzun okunmasını ve bakımının zor olmasını sağlar. Bu nedenle, bir deyimi bir satırda tutmanız önerilir.
Deyimi birden çok satır üzerinde sürdürme
Deyim genellikle bir satıra sığar, ancak çok uzun olduğunda, bir boşluk ve ardından bir alt çizgi karakteri (_
) ve ardından bir satır başı içeren bir satır devamlılığı dizisi kullanarak bir sonraki satıra devam edebilirsiniz. Aşağıdaki örnekte yürütülebilir MsgBox
deyim iki satır üzerinden devam edilir.
Public Sub DemoBox()
Dim nameVar As String
nameVar = "John"
MsgBox("Hello " & nameVar _
& ". How are you?")
End Sub
Örtük satır devamlılığı
Çoğu durumda, alt çizgi karakterini (_
) kullanmadan sonraki ardışık satırda bir deyimi devam edebilirsiniz. Aşağıdaki söz dizimi öğeleri, deyimini bir sonraki kod satırında örtük olarak sürdürmektedir.
Virgülden (
,
) sonra. Örneğin:Public Function GetUsername(ByVal username As String, ByVal delimiter As Char, ByVal position As Integer) As String Return username.Split(delimiter)(position) End Function
Açık parantezden (
(
) sonra veya kapatma parantezi ()
) öncesinde. Örneğin:Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )
Açık bir küme ayracı (
{
) veya kapanış küme ayracı (}
) öncesinde. Örneğin:Dim customer = New Customer With { .Name = "Terry Adams", .Company = "Adventure Works", .Email = "terry@www.adventure-works.com" }
Daha fazla bilgi için bkz . Nesne Başlatıcıları: Adlandırılmış ve Anonim Türler veya Koleksiyon Başlatıcıları.
Açık bir katıştırılmış ifadeden (
<%=
) sonra veya BIR XML değişmez değeri içindeki katıştırılmış ifadenin (%>
) kapatılmasından önce. Örneğin:Dim customerXml = <Customer> <Name> <%= customer.Name %> </Name> <Email> <%= customer.Email %> </Email> </Customer>
Daha fazla bilgi için bkz . XML'de Katıştırılmış İfadeler.
Birleştirme işlecinden (
&
) sonra. Örneğin:cmd.CommandText = "SELECT * FROM Titles JOIN Publishers " & "ON Publishers.PubId = Titles.PubID " & "WHERE Publishers.State = 'CA'"
Daha fazla bilgi için bkz . İşlevselliğe Göre Listelenen İşleçler.
Atama işleçlerinden sonra (
=
,&=
,:=
,+=
,-=
, ,*=
,/=
,\=
^=
<<=
).>>=
Örneğin:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Daha fazla bilgi için bkz . İşlevselliğe Göre Listelenen İşleçler.
bir ifade içinde ikili işleçler (
+
,<>
*
Mod
-
/
, ,<
,>
, ,^
Or
OrElse
Like
<=
>>
Xor
>=
<<
And
AndAlso
) sonra. Örneğin:Dim memoryInUse = My.Computer.Info.TotalPhysicalMemory + My.Computer.Info.TotalVirtualMemory - My.Computer.Info.AvailablePhysicalMemory - My.Computer.Info.AvailableVirtualMemory
Daha fazla bilgi için bkz . İşlevselliğe Göre Listelenen İşleçler.
ve
IsNot
işleçlerindenIs
sonra. Örneğin:If TypeOf inStream Is IO.FileStream AndAlso inStream IsNot Nothing Then ReadFile(inStream) End If
Daha fazla bilgi için bkz . İşlevselliğe Göre Listelenen İşleçler.
Üye niteleyici karakterinden (
.
) sonra ve üye adından önce. Örneğin:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Ancak, bir tür için başlatma listesindeki deyimini veya
With
değerleri sağlarken üye niteleyici karakterini izleyen bir satır devamlılığı karakteri (_
) eklemeniz gerekir. Deyimleri veya nesne başlatma listelerini kullanırkenWith
atama işlecinden sonraki satırı (örneğin,=
) kesmeyi göz önünde bulundurun. Örneğin:' Not allowed: ' Dim aType = New With { . ' PropertyName = "Value" ' Allowed: Dim aType = New With {.PropertyName = "Value"} Dim log As New EventLog() ' Not allowed: ' With log ' . ' Source = "Application" ' End With ' Allowed: With log .Source = "Application" End With
Daha fazla bilgi için bkz . Deyimi veya Nesne Başlatıcıları ile Bitir: Adlandırılmış ve Anonim Türler.
XML ekseni özellik niteleyicisinin (
.
veya.@
)...
ardından. Ancak, anahtar sözcüğünü kullanırkenWith
bir üye niteleyicisi belirtirken bir satır devamlılığı karakteri (_
) eklemeniz gerekir. Örneğin:Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.Value
Daha fazla bilgi için bkz . XML Ekseni Özellikleri.
Bir öznitelik belirttiğinizde küçüktür işaretinden (<) sonra veya büyüktür işaretinden (
>
) önce. Ayrıca, bir öznitelik belirttiğinizde büyüktür işaretinden (>
) sonra. Ancak, derleme düzeyi veya modül düzeyi öznitelikleri belirtirken bir satır devamlılığı karakteri (_
) eklemeniz gerekir. Örneğin:< Serializable() > Public Class Customer Public Property Name As String Public Property Company As String Public Property Email As String End Class
Daha fazla bilgi için bkz . Özniteliklere genel bakış.
Sorgu işleçlerinden önce ve sonra (, , ,
Group By
,Group Join
,Join
, ,Let
, ,Order By
, ,Where
Take
Into
On
Skip While
In
Ascending
Take While
Select
Skip
ve ).Descending
From
Distinct
Aggregate
Birden çok anahtar sözcükten (Order By
,Group Join
,Take While
veSkip While
) oluşan sorgu işleçlerinin anahtar sözcükleri arasındaki çizgiyi kesemezsiniz. Örneğin:Dim vsProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.Contains("Visual Studio") Select proc.ProcessName, proc.Id, proc.MainWindowTitle
Daha fazla bilgi için bkz . Sorgular.
Deyimindeki
For Each
anahtar sözcüğündenIn
sonra. Örneğin:For Each p In vsProcesses Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", p.ProcessName, p.Id, p.MainWindowTitle) Next
Daha fazla bilgi için bkz . For Each... Next Deyimi.
Koleksiyon başlatıcıda anahtar sözcüğünden
From
sonra. Örneğin:Dim days = New List(Of String) From { "Mo", "Tu", "We", "Th", "F", "Sa", "Su" }
Daha fazla bilgi için bkz . Koleksiyon Başlatıcıları.
Açıklama ekleme
Kaynak kodu yazan programcı için bile her zaman açıklayıcı değildir. Bu nedenle çoğu programcı, kodlarını belgeleye yardımcı olmak için ekli açıklamaları serbest olarak kullanır. Koddaki açıklamalar, bir yordamı veya belirli bir yönergeyi daha sonra okuyan veya bununla çalışan herkese açıklayabilir. Visual Basic derleme sırasında açıklamaları yoksayar ve derlenmiş kodu etkilemez.
Açıklama satırları bir kesme işaretiyle ('
) veya REM
ardından boşlukla başlar. Bunlar, bir dize dışında kodun herhangi bir yerine eklenebilir. Deyimine açıklama eklemek için, bir kesme işareti ekleyin veya REM
deyiminin arkasına ve ardından açıklamayı ekleyin. Açıklamalar kendi satırlarında da kullanılabilir. Aşağıdaki örnekte bu olasılıklar gösterilmektedir.
' This is a comment on a separate code line.
REM This is another comment on a separate code line.
x += a(i) * b(i) ' Add this amount to total.
MsgBox(statusMessage) REM Inform operator of status.
Derleme hatalarını denetleme
Bir kod satırı yazdıktan sonra, çizgi dalgalı mavi alt çizgiyle görüntülenirse (hata iletisi de görünebilir), deyiminde bir söz dizimi hatası vardır. Deyiminde nelerin yanlış olduğunu bulmanız (görev listesine bakarak veya fare işaretçisiyle hatanın üzerine gelip hata iletisini okuyarak) ve bunu düzeltmeniz gerekir. Kodunuzdaki tüm söz dizimi hatalarını düzeltene kadar, programınız doğru derlenemeyen bir programdır.
İlgili bölümler
Süre | Tanım |
---|---|
Atama İşleçleri | , *= ve &= gibi = atama işleçlerini kapsayan dil başvuru sayfalarına bağlantılar sağlar. |
İşleçler ve İfadeler | Yeni değerler vermek için öğelerin işleçlerle nasıl birleştirildiği gösterilir. |
Nasıl yapılır: Kodda Deyimleri Bölme ve Birleştirme | Tek bir deyimin birden çok satıra nasıl kesileceğini ve aynı satıra birden çok deyimin nasıl yerleştirileceğini gösterir. |
Nasıl yapılır: Etiket Deyimleri | Bir kod satırını etiketlemeyi gösterir. |