Yerel Türü Arabirimi (Visual Basic Başvurusu)
Visual Basic derleyici, bir yan tümce olmadan belirtilen yerel değişkenlerin veri türlerini belirlemede tür çıkarımı kullanır As . Derleyici, değişkenin türünü başlatma ifadesinin türünden algılar. Bu, aşağıdaki örnekte gösterildiği gibi, bir türü açıkça belirtmeden değişkenleri bildirmenize olanak sağlar. Bildirimlerin bir sonucu olarak, num1 ve num2 kesin olarak tam sayı olarak türdedir.
Public Sub inferenceExample()
' Using explicit typing.
Dim num1 As Integer = 3
' Using local type inference.
Dim num2 = 3
End Sub
Not
num2Önceki örnekte bir olarak yazılmaları istemiyorsanız Integer , veya gibi bir bildirim kullanarak başka bir tür belirtebilirsiniz Dim num3 As Object = 3 Dim num4 As Double = 3 .
Not
Tür çıkarımı, yalnızca statik olmayan yerel değişkenler için kullanılabilir; sınıf alanları, özellikler veya işlevlerin türünü belirleyebilmek için kullanılamaz.
Yerel tür çıkarımı yordam düzeyinde geçerlidir. Modül düzeyinde (bir sınıf, yapı, modül veya arabirim içinde değil, yordam veya blok içinde değil) değişkenleri bildirmek için kullanılamaz. num2Önceki örnekte, bir yordamda yerel bir değişken yerine bir sınıfın alanı olsaydı, bildirim üzerinde bir hataya neden olur Option Strict ve num2 ile bir olarak sınıflandırır Object Option Strict . Benzer şekilde, yerel tür çıkarımı olarak belirtilen yordam düzeyi değişkenlerine uygulanmaz Static .
Tür çıkarımı ile geç bağlama
Tür çıkarımı kullanan kod, geç bağlamaya dayanan koda benzer. Ancak tür çıkarımı, değişkeni olarak bırakmak yerine değişkeni kesin bir şekilde bırakır Object . Derleyici, değişkenin türünü, erken bağlantılı kod oluşturmak için derleme zamanında değişkenin türünü tespit etmek için bir değişkenin başlatıcısı kullanır. Önceki örnekte, gibi, num2 num1 bir olarak yazılır Integer .
Erken bağlanan değişkenlerin davranışı, türü yalnızca çalışma zamanında bilinen, geç bağlanan değişkenlerden farklıdır. Türün erken olması, derleyicinin yürütmeden önce sorunları belirlemesini, belleği tam olarak ayırmasını ve diğer iyileştirmeleri gerçekleştirmesini sağlar. erken bağlama ayrıca, Visual Basic tümleşik geliştirme ortamının (ıde) bir nesnenin üyeleri hakkında ıntellisense yardımı sağlamasına olanak sağlar. Erken bağlama de performans için tercih edilir. Bunun nedeni, geç bağlantılı bir değişkende depolanan tüm verilerin tür olarak sarmalanması Object ve çalışma zamanında tür üyelerine erişmesi, programın daha yavaş olmasına neden olur.
Örnekler
Yerel bir değişken bir yan tümce olmadan bildirildiğinde ve başlatıldığında tür çıkarımı oluşur As . 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 bir değişken bildirir String .
' Using explicit typing.
Dim name1 As String = "Springfield"
' Using local type inference.
Dim name2 = "Springfield"
Aşağıdaki kod, tamsayılar dizisi oluşturmanın iki denk 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}
Döngü denetim değişkeninin türünü belirleyebilmek için tür çıkarımı kullanmak uygun değildir. Aşağıdaki kodda, number bir Integer önceki örnekteki bir tamsayılar dizisi olduğu için derleyici bir someNumbers2 .
Dim total = 0
For Each number In someNumbers2
total += number
Next
Yerel tür çıkarımı, Using Aşağıdaki örnekte gösterildiği gibi, kaynak adının türünü oluşturmak için ifadelerde kullanılabilir.
Using proc = New System.Diagnostics.Process
' Insert code to work with the resource.
End Using
Aşağıdaki örnekte gösterildiği gibi, bir değişkenin türü, işlevlerin dönüş değerlerinden de çıkarsanamıyor. Her ikisi pList1 ve pList2 işlem dizileri, çünkü Process.GetProcesses bir işlem dizisi döndürür.
' Using explicit typing.
Dim pList1() As Process = Process.GetProcesses()
' Using local type inference.
Dim pList2 = Process.GetProcesses()
Seçenek çıkarımı
Option Infer belirli bir dosyada yerel tür çıkarımı izin verilip verilmeyeceğini belirtmenizi belirler. Seçeneği etkinleştirmek veya engellemek için, dosyanın başlangıcında aşağıdaki deyimlerden birini yazın.
Option Infer On
Option Infer Off
Kodunuzda için bir değer belirtmezseniz Option Infer , derleyici varsayılanı olur Option Infer On .
Bir dosyada için ayarlanan değer Option Infer IDE 'de veya komut satırında ayarlanan değerle çakışıyorsa, dosyadaki değerin önceliği vardır.
daha fazla bilgi için bkz. Option ınfer deyimleri ve derleme sayfası, Project tasarımcısı (Visual Basic).