Visual Basic'de İşleç Önceliği

Bir ifadede birkaç işlem gerçekleştiğinde, her bölüm işleç önceliği olarak adlandırılan önceden belirlenmiş bir sırada değerlendirilir ve çözümlenir.

Öncelik Kuralları

İfadeler birden fazla kategoriden işleç içerdiğinde, aşağıdaki kurallara göre değerlendirilir:

  • Aritmetik ve birleştirme işleçleri, aşağıdaki bölümde açıklanan öncelik sırasına sahiptir ve bunların tümü karşılaştırma, mantıksal ve bit düzeyinde işleçlerden daha yüksek önceliğe sahiptir.

  • Tüm karşılaştırma işleçleri eşit önceliğe sahiptir ve tümü mantıksal ve bit düzeyinde işleçlerden daha yüksek önceliğe sahiptir, ancak aritmetik ve birleştirme işleçlerinden daha düşük önceliğe sahiptir.

  • Mantıksal ve bit düzeyinde işleçler, aşağıdaki bölümde açıklanan öncelik sırasına sahiptir ve bunların tümü aritmetik, birleştirme ve karşılaştırma işleçlerinden daha düşük önceliğe sahiptir.

  • Eşit önceliğe sahip işleçler ifadede göründükleri sırada soldan sağa değerlendirilir.

Öncelik Sırası

İşleçler aşağıdaki öncelik sırasına göre değerlendirilir:

Await İşleci

Bekliyor

Aritmetik ve Birleştirme İşleçleri

Üs (^)

Birli kimlik ve olumsuzlama (+, )

Çarpma ve kayan nokta bölme (*, /)

Tamsayı bölme (\)

Modüler aritmetik (Mod)

Toplama ve çıkarma (+, )

Dize birleştirme (&)

Aritmetik bit kaydırması (<<, >>)

Karşılaştırma İşleçleri

Tüm karşılaştırma işleçleri (=, <>, <, <=, >, >=, , IsIsNot, Like, .TypeOf..Is)

Mantıksal ve Bit Düzeyinde İşleçler

Olumsuzlama (Not)

AndBağlay (, AndAlso)

Kapsayıcı ayrıştırma (Or, OrElse)

Özel karar verme (Xor)

Açıklamalar

işleci = yalnızca eşitlik karşılaştırma işlecidir, atama işleci değildir.

Dize birleştirme işleci (&) bir aritmetik işleç değildir, ancak öncelikli olarak aritmetik işleçlerle gruplandırılır.

Is ve IsNot işleçleri nesne başvurusu karşılaştırma işleçleridir. İki nesnenin değerlerini karşılaştırmaz; yalnızca iki nesne değişkeninin aynı nesne örneğine başvurup başvurmadığını denetler.

İlişkilendirilebilirlik

İfadede eşit öncelikli işleçler birlikte görüntülendiğinde(çarpma ve bölme gibi), derleyici her işlemi soldan sağa doğru karşılaştığında değerlendirir. Aşağıdaki örnek bunu göstermektedir.

Dim n1 As Integer = 96 / 8 / 4
Dim n2 As Integer = (96 / 8) / 4
Dim n3 As Integer = 96 / (8 / 4)

İlk ifade, 96 / 8 bölmesini (12 ile sonuçlanan) ve ardından 12 / 4 bölümünü değerlendirir ve bu da üç ile sonuçlar. Derleyici için işlemleri n1 soldan sağa doğru değerlendirdiğinden, için bu sıra açıkça belirtildiğinde n2değerlendirme aynıdır. n2 Hem hem de n1 üç sonucunu elde edin. Buna karşılık, n3 parantezler derleyiciyi önce 8/4'ün değerlendirilmesini zorladığı için 48 sonucunu elde eder.

Bu davranış nedeniyle işleçlerin Visual Basic'te ilişkilendirilebilir olduğu söylenir.

Öncelik ve İlişkilendirmeyi Geçersiz Kılma

İfadenin bazı bölümlerinin diğerlerinden önce değerlendirilmesini zorlamak için parantez kullanabilirsiniz. Bu, hem öncelik sırasını hem de sol ilişkilendirmeyi geçersiz kılabilir. Visual Basic her zaman dıştakilerden önce parantez içine alınmış işlemleri gerçekleştirir. Bununla birlikte, parantez içinde parantezler kullanmadığınız sürece, parantez içinde sıradan önceliği ve ilişkilendirmeyi korur. Aşağıdaki örnek bunu göstermektedir.

Dim a, b, c, d, e, f, g As Double
a = 8.0
b = 3.0
c = 4.0
d = 2.0
e = 1.0
f = a - b + c / d * e
' The preceding line sets f to 7.0. Because of natural operator
' precedence and associativity, it is exactly equivalent to the
' following line.
f = (a - b) + ((c / d) * e)
' The following line overrides the natural operator precedence
' and left associativity.
g = (a - (b + c)) / (d * e)
' The preceding line sets g to 0.5.

Ayrıca bkz.