Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Değişkenleri bildirirken yerel tür çıkarımının kullanılmasını sağlar.
Sözdizimi
Option Infer { On | Off }
Parçalar
| Süre | Tanım |
|---|---|
On |
Opsiyonel. Yerel tür çıkarımı etkinleştirir. |
Off |
Opsiyonel. 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:
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ı, Proje Tasarımcısı (Visual Basic) üzerinde Seçenek Katı 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:
Uyarı
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ı, Proje Tasarımcısı (Visual Basic) üzerindeki Option Infer 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 Gezginipenceresinde 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çlar menüsünde Seçenekler'e tıklayın.
Seçenekleri iletişim kutusunda Projeler ve Çözümler genişletin ve ardından VB Varsayılanları öğesine 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ı | Hayı | Dim qty |
Kapalıysa Option Strict (varsayılan), değişkeni olarak Nothingayarlanır.Açıksa Option Strict , derleme zamanı hatası oluşur. |
| Hayı | 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. |
| Evet | Hayı | 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. |
| Evet | Evet | 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