Option Infer Deyimi
Değişkenleri bildirirken yerel tür çıkarımının kullanılmasını sağlar.
Sözdizimi
Option Infer { On | Off }
Parça
Süre | Tanım |
---|---|
On |
isteğe bağlı. Yerel tür çıkarımı etkinleştirir. |
Off |
isteğe bağlı. Yerel tür çıkarımı devre dışı bırakır. |
Açıklamalar
Bir dosyada ayarlamak Option Infer
için, başka bir kaynak kodundan önce dosyanın en üstüne veya Option Infer Off
yazınOption 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.
olarak On
ayarladığınızdaOption Infer
, bir veri türünü açıkça belirtmeksizin yerel değişkenleri bildirebilirsiniz. Derleyici, bir değişkenin veri türünü başlatma ifadesinin türünden çıkartır.
Aşağıdaki çizimde açık Option Infer
. Bildirimdeki Dim someVar = 2
değişken, tür çıkarımına göre tamsayı olarak bildirilir.
Aşağıdaki ekran görüntüsünde, Option Infer açıkken IntelliSense gösterilmektedir:
Aşağıdaki çizimde Option Infer
kapalıdır. Bildirimindeki Dim someVar = 2
değişken, tür çıkarımına göre bildirilir Object
. Bu örnekte, Derleme Sayfası, Project Tasarım Aracı (Visual Basic) üzerinde Option Strict ayarı Kapalı olarak ayarlanmıştır.
Aşağıdaki ekran görüntüsünde, Seçenek Çıkar özelliği kapalı olduğunda IntelliSense gösterilmektedir:
Not
Bir değişken olarak Object
bildirildiğinde, program çalışırken çalışma zamanı türü değişebilir. Visual Basic, bir ile değer türü arasında Object
dönüştürme yapmak için kutulama ve kutu açma olarak adlandırılan işlemleri gerçekleştirir ve bu da yürütmeyi daha yavaş hale getirir. Kutulama ve kutu açma hakkında bilgi için bkz . Visual Basic Dil Belirtimi.
Tür çıkarımı yordam düzeyinde uygulanır ve bir sınıf, yapı, modül veya arabirimdeki bir yordamın dışında uygulanmaz.
Ek bilgi için bkz . Yerel Tür Çıkarımı.
Option Infer Deyimi Mevcut Olmadığında
Kaynak kod bir Option Infer
deyim içermiyorsa, Derleme Sayfası, Project Tasarım Aracı (Visual Basic) üzerindeki Seçenek Çıkar ayarı kullanılır. Komut satırı derleyicisi kullanılırsa, -optioninfer derleyici seçeneği kullanılır.
IDE'de Seçenek Çıkar'ı ayarlamak için
Çözüm Gezgini'da bir proje seçin. Proje menüsünde Özellikler'e tıklayın.
Derle sekmesine tıklayın.
Seçenek çıkar kutusunda değeri ayarlayın.
Yeni bir proje oluşturduğunuzda, Derle sekmesindeki Seçenek Çıkar ayarı VB Varsayılanları iletişim kutusundaki Seçenek Çıkar ayarına ayarlanır. VB Varsayılanları iletişim kutusuna erişmek için Araçlarmenüsünde Seçenekler'e tıklayın. Seçenekler iletişim kutusunda Projeler ve Çözümler'i genişletin ve VB Varsayılanları'na tıklayın. VB Varsayılanları'ndaki ilk varsayılan ayardırOn
.
Komut satırında Option Infer ayarlamak için
vbc komutuna -optioninfer derleyici seçeneğini ekleyin.
Varsayılan Veri Türleri ve Değerleri
Aşağıdaki tabloda, bir Dim
deyimde veri türünü ve başlatıcıyı belirtmenin çeşitli bileşimlerinin sonuçları açıklanmaktadır.
Veri türü belirtildi mi? | Başlatıcı belirtildi mi? | Örnek | Sonuç |
---|---|---|---|
Hayır | Hayır | Dim qty |
Kapalıysa Option Strict (varsayılan), değişkeni olarak Nothing ayarlanır.Açıksa Option Strict , derleme zamanı hatası oluşur. |
Hayır | Evet | Dim qty = 5 |
açıksa Option Infer (varsayılan), değişken başlatıcının veri türünü alır. Bkz. Yerel Tür Çıkarımı.kapalıysa ve Option Strict kapalıysa Option Infer değişkeni veri türünü Object alır.Kapalı ve Option Strict açıksa Option Infer derleme zamanı hatası oluşur. |
Yes | Hayır | Dim qty As Integer |
Değişken, veri türü için varsayılan değere başlatılır. Daha fazla bilgi için bkz . Dim Deyimi. |
Yes | Yes | Dim qty As Integer = 5 |
Başlatıcının veri türü belirtilen veri türüne dönüştürülemezse, derleme zamanı hatası oluşur. |
Örnek 1
Aşağıdaki örneklerde deyiminin yerel tür çıkarımını Option Infer
nasıl etkinleştireceği gösterilmektedir.
' Enable Option Infer before trying these examples.
' Variable num is an Integer.
Dim num = 5
' Variable dbl is a Double.
Dim dbl = 4.113
' Variable str is a String.
Dim str = "abc"
' Variable pList is an array of Process objects.
Dim pList = Process.GetProcesses()
' Variable i is an Integer.
For i = 1 To 10
Console.WriteLine(i)
Next
' Variable item is a string.
Dim lst As New List(Of String) From {"abc", "def", "ghi"}
For Each item In lst
Console.WriteLine(item)
Next
' Variable namedCust is an instance of the Customer class.
Dim namedCust = New Customer With {.Name = "Blue Yonder Airlines",
.City = "Snoqualmie"}
' Variable product is an instance of an anonymous type.
Dim product = New With {Key .Name = "paperclips", .Price = 1.29}
' If customers is a collection of Customer objects in the following
' query, the inferred type of cust is Customer, and the inferred type
' of custs is IEnumerable(Of Customer).
Dim custs = From cust In customers
Where cust.City = "Seattle"
Select cust.Name, cust.ID
Örnek 2
Aşağıdaki örnek, bir değişken olarak Object
tanımlandığında çalışma zamanı türünün farklı olabileceğini gösterir.
' Disable Option Infer when trying this example.
Dim someVar = 5
Console.WriteLine(someVar.GetType.ToString)
' If Option Infer is instead enabled, the following
' statement causes a run-time error. This is because
' someVar was implicitly defined as an integer.
someVar = "abc"
Console.WriteLine(someVar.GetType.ToString)
' Output:
' System.Int32
' System.String