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 Onayarladığı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:

Screenshot showing IntelliSense view when Option Infer is on.

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:

Screenshot showing IntelliSense view when Option Infer is off.

Not

Bir değişken olarak Objectbildirildiğ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

  1. Çözüm Gezgini'da bir proje seçin. Proje menüsünde Özellikler'e tıklayın.

  2. Derle sekmesine tıklayın.

  3. 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 Nothingayarlanı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ü Objectalı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 Objecttanı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

Ayrıca bkz.