Aracılığıyla paylaş


Yerel Tür Çıkarımı (Visual Basic)

Visual Basic derleyicisi, yan tümcesi olmadan bildirilen yerel değişkenlerin veri türlerini belirlemek için As kullanır. Derleyici, başlatma ifadesinin türünden değişkenin türünü çıkartır. Bu, aşağıdaki örnekte gösterildiği gibi bir türü açıkça belirtmeksizin değişkenleri bildirmenizi sağlar. Bildirimler sonucunda, hem num1 hem de num2 güçlü bir şekilde tamsayı olarak belirlenir.

Public Sub inferenceExample()

    ' Using explicit typing.
    Dim num1 As Integer = 3

    ' Using local type inference.
    Dim num2 = 3

End Sub

Uyarı

Önceki örnekte num2 bir Integer olarak yazılmasını istemiyorsanız, Dim num3 As Object = 3 veya Dim num4 As Double = 3 gibi bir bildirim kullanarak başka bir tür belirleyebilirsiniz.

Uyarı

Tür çıkarımı yalnızca statik olmayan yerel değişkenler için kullanılabilir; sınıf alanlarının, özelliklerin veya işlevlerin türünü belirlemek için kullanılamaz.

Yerel tip çıkarımı prosedür seviyesinde uygulanır. Modül düzeyinde (bir sınıf, yapı, modül veya arabirim içinde, ancak bir yordam veya blok içinde değil) değişken bildirmek için kullanılamaz. Önceki örnekte num2 bir yordamda yerel değişken yerine bir sınıfın alanı olsaydı, Option Strict açıkken bildirim bir hataya neden olurdu ve num2 kapalıyken Object'yi Option Strict olarak sınıflandırırdı. Benzer şekilde, yerel tür çıkarımı olarak Staticbildirilen yordam düzeyi değişkenleri için geçerli değildir.

Tür Çıkarımı ile Geç Bağlama Karşılaştırması

Tür çıkarımı kullanan kod, geç bağlamayı kullanan koda benzer. Ancak, tür çıkarımı değişkeni belirsiz bırakmak yerine güçlü bir şekilde tiplendirir. Derleyici, erken bağlanan kod üretmek üzere derleme zamanında değişkenin türünü belirlemek için değişkenin başlatıcısını kullanır. Önceki örnekte, num2gibi num1, olarak Integeryazıldı.

Erken bağlanan değişkenlerin davranışı, türün yalnızca çalışma zamanında bilindiği geç bağlı değişkenlerden farklıdır. Türün erken bilinmesi, derleyicinin yürütmeden önce sorunları tanımlamasına, belleği hassas bir şekilde ayırmasına ve diğer iyileştirmeleri gerçekleştirmesine olanak tanır. Erken bağlama, Visual Basic tümleşik geliştirme ortamının (IDE) bir nesnenin üyeleri hakkında IntelliSense Yardımı sağlamasına da olanak tanır. Performans açısından özellikle erken bağlama tercih edilir. Bunun nedeni, geç bağlı değişkende depolanan tüm verilerin türü Object olarak sarmalanması ve çalışma zamanında türün üyelerine erişmenin programı yavaşlatmasıdır.

Örnekler

Tür çıkarımı, bir yerel değişken bir As ifadesi olmadan bildirildiğinde ve başlatıldığında gerçekleşir. Derleyici, değişkenin türü olarak atanan ilk değerin türünü kullanır. Örneğin, aşağıdaki kod satırlarının her biri türünde Stringbir değişken bildirir.

' Using explicit typing.
Dim name1 As String = "Springfield"

' Using local type inference.
Dim name2 = "Springfield"

Aşağıdaki kod, bir tamsayı dizisi oluşturmanın iki eşdeğer yolunu gösterir.

' Using explicit typing.
Dim someNumbers1() As Integer = New Integer() {4, 18, 11, 9, 8, 0, 5}

' Using local type inference.
Dim someNumbers2 = New Integer() {4, 18, 11, 9, 8, 0, 5}

Bir döngü denetim değişkeninin türünü belirlemek için tür çıkarımı kullanmak uygundur. Aşağıdaki kodda, derleyici bunun önceki örnekten bir tamsayı dizisi olduğu için number olduğunu çıkarsar.IntegersomeNumbers2

Dim total = 0
For Each number In someNumbers2
    total += number
Next

Aşağıdaki örnekte gösterildiği gibi, kaynak adının türünü oluşturmak için deyimlerde Using yerel tür çıkarımı kullanılabilir.

Using proc = New System.Diagnostics.Process
    ' Insert code to work with the resource.
End Using

Bir değişkenin türü, aşağıdaki örnekte gösterildiği gibi işlevlerin dönüş değerlerinden de çıkarılabilir. Hem pList1 hem de pList2, işlem dizileridir çünkü Process.GetProcesses bir dizi işlem döndürür.

' Using explicit typing.
Dim pList1() As Process = Process.GetProcesses()

' Using local type inference.
Dim pList2 = Process.GetProcesses()

Seçenek Çıkar

Option Infer , belirli bir dosyada yerel tür çıkarımına izin verilip verilmeyeceğini belirtmenizi sağlar. Seçeneği etkinleştirmek veya engellemek için dosyanın başlangıcına aşağıdaki deyimlerden birini yazın.

Option Infer On

Option Infer Off

Kodunuzda için Option Infer bir değer belirtmezseniz, derleyici varsayılanı olur Option Infer On.

Bir dosyada için ayarlanan Option Infer değer, IDE'de veya komut satırında ayarlanan değerle çakişiyorsa, dosyadaki değerin önceliği vardır.

Daha fazla bilgi için bkz. Option Infer Deyimi ve Derleme Sayfası, Proje Tasarımcısı (Visual Basic).

Ayrıca bakınız