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ı applyFormatbir yordam bildirir. Ayrıca öğesini applyFormatPublicbelirtir; 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 limitInteger bildiren deyimidirConst.

Üçüncü bildirim, değişkenini DimthisWidgetbildiren 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 clockwisedeğerini denetler. değeri ise Trueyöntemini aWidgetçağırırspinClockwise. değeri ise Falseyöntemini aWidgetçağırırspinCounterClockwise. Denetim If...Then...Else yapısı ile End Ifbiter.

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 v42 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 ztutulan değere ekler ve ardından çağrısı tarafından döndürülen değeri işlevine findResultekler. Bu ifadenin toplam değeri daha sonra değişkeninde xdepolanı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, , Dateveya Object veri türünün programlama öğelerine Charuygun 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 n1 ekler ve ardından bu yeni değeri içinde ndepolar. 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 IntegerDoubleiç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-/, , <, >, , ^OrOrElseLike<=>>Xor>=<<AndAndAlso) 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çlerinden Is 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ırken With 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ırken With 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, , WhereTakeIntoOnSkip WhileInAscendingTake WhileSelectSkipve ).DescendingFromDistinctAggregate Birden çok anahtar sözcükten (Order By, Group Join, Take Whileve Skip 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üğünden In 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.

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.