Yerel Türü Arabirimi (Visual Basic Başvurusu)
Visual Basic derleyicisi, yan As
tümcesi olmadan bildirilen yerel değişkenlerin veri türlerini belirlemek için tür çıkarımı 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. Bildirimlerin sonucu olarak, hem hem num2
de num1
tamsayı olarak kesin olarak yazılır.
Public Sub inferenceExample()
' Using explicit typing.
Dim num1 As Integer = 3
' Using local type inference.
Dim num2 = 3
End Sub
Not
Önceki örnekte olarak yazılmasını Integer
istemiyorsanız num2
veya Dim num4 As Double = 3
gibi Dim num3 As Object = 3
bir bildirim kullanarak başka bir tür belirtebilirsiniz.
Not
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 tür çıkarımı yordam düzeyinde uygulanır. Modülleri modül düzeyinde (bir sınıf, yapı, modül veya arabirim içinde) bildirmek için kullanılamaz, ancak yordam veya blok içinde bildirilemez. Önceki örnekte bir yordamda yerel değişken yerine sınıfın bir alanı varsanum2
, bildirim ile Option Strict
hataya neden olur ve ile off Option Strict
olarak Object
sınıflandırılırnum2
. Benzer şekilde, yerel tür çıkarımı olarak Static
bildirilen 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 olarak bırakmak yerine kesin olarak Object
yazar. 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, num2
gibi num1
, olarak Integer
yazı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. Erken bağlama da performans için 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 yan As
tümcesi olmadan bildirildiğinde ve başlatıldığında oluşur. 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 String
bir 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 someNumbers2
olduğunu çıkarsar.number
Integer
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 hem de pList1
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ı, Project Tasarım Aracı (Visual Basic).