Pernyataan Infer Opsi
Memungkinkan penggunaan inferensi jenis lokal dalam mendeklarasikan variabel.
Sintaks
Option Infer { On | Off }
Generator
Term | Definisi |
---|---|
On |
Opsional. Mengaktifkan inferensi jenis lokal. |
Off |
Opsional. Menonaktifkan inferensi jenis lokal. |
Keterangan
Untuk menetapkan Option Infer
file, jenis Option Infer On
atau Option Infer Off
di bagian atas file, sebelum kode sumber lainnya. Jika nilai yang ditetapkan untuk Option Infer
dalam file berkonflik dengan nilai yang diatur dalam IDE atau pada baris perintah, nilai yang ada di dalam file memiliki prioritas.
Saat Anda mengatur Option Infer
ke On
, Anda dapat mendeklarasikan variabel lokal tanpa secara eksplisit menyatakan jenis data. Penyusun menyimpulkan jenis data variabel dari jenis ekspresi inisialisasinya.
Dalam ilustrasi berikut, Option Infer
diaktifkan. Variabel dalam deklarasi Dim someVar = 2
dinyatakan sebagai bilangan bulat berdasarkan inferensi jenis.
Tangkapan layar berikut menunjukkan IntelliSense saat Option Infer menyala:
Dalam ilustrasi berikut, Option Infer
dinonaktifkan. Variabel dalam deklarasi Dim someVar = 2
dinyatakan sebagai Object
berdasarkan inferensi jenis. Dalam contoh ini, setelan Option Strict diatur ke Nonaktif pada Halaman Kompilasi, Perancang Proyek (Visual Basic).
Tangkapan layar berikut menunjukkan IntelliSense saat Option Infer mati:
Catatan
Ketika variabel dinyatakan sebagai Object
, jenis durasi dapat berubah saat program sedang berjalan. Visual Basic melakukan operasi yang disebut boxing dan unboxing untuk mengonversi antara Object
dan jenis nilai, yang membuat eksekusi menjadi lebih lambat. Untuk informasi tentang boxing dan unboxing, lihat Spesifikasi Bahasa Visual Basic.
Inferensi jenis berlaku pada tingkat prosedur, dan tidak berlaku di luar prosedur di kelas, struktur, modul, atau antarmuka.
Untuk informasi tambahan, lihat Inferensi Jenis Lokal.
Ketika Pernyataan Infer Opsi Tidak Ada
Jika kode sumber tidak berisi pernyataan Option Infer
, setelan Inferensi Opsi pada Halaman Kompilasi, Perancang Proyek (Visual Basic) digunakan. Jika penyusun baris perintah sedang digunakan, opsi penyusun -menyimpulkan opsi sedang digunakan.
Untuk mengatur Option Infer di IDE
Di Penjelajah Solusi, pilih proyek. Pada menu Proyek, klik Properti.
Klik tab Kompilasi.
Atur nilai dalam kotak infer Opsi.
Saat Anda membuat proyek baru, setelan Inferensi Opsi pada tab Kompilasi diatur ke setelan Inferensi Opsi dalam kotak dialog Default VB. Untuk mengakses kotak dialog Default VB, pada menu Tools, klik Opsi. Dalam kotak dialog Opsi, perluas Proyek dan Solusi, lalu klik Default VB. Setelan default awal di Default VB adalah On
.
Untuk mengatur Inferensi Opsi pada baris perintah
Sertakan opsi penyusun -optioninfer dalam perintah vbc.
Nilai dan Jenis Data Default
Tabel berikut ini menjelaskan hasil berbagai kombinasi dari menentukan jenis data dan penginisialisasi dalam Dim
suatu pernyataan.
Jenis data yang ditentukan? | Inisialisasi yang ditentukan? | Contoh | Hasil |
---|---|---|---|
Tidak | Tidak | Dim qty |
Jika Option Strict nonaktif (default), variabel diatur ke Nothing .Jika Option Strict aktif, kesalahan waktu kompilasi terjadi. |
Tidak | Ya | Dim qty = 5 |
Jika Option Infer aktif (default), variabel mengambil jenis data penginisialisasi. LihatInferensi Jenis Lokal.Jika Option Infer nonaktif dan Option Strict nonaktif, variabel akan mengambil jenis data dariObject .Jika Option Infer nonaktif dan Option Strict aktif, kesalahan waktu kompilasi muncul. |
Ya | Tidak | Dim qty As Integer |
Variabel diinsialisasi ke nilai default untuk jenis data. Untuk informasi selengkapnya, lihat Pernyataan Dim. |
Ya | Ya | Dim qty As Integer = 5 |
Jika jenis data inisialisasi tidak dapat dikonversi ke jenis data tertentu, kesalahan waktu kompilasi akan terjadi. |
Contoh 1
Contoh berikut menunjukkan bagaimana pernyataan mengaktifkan Option Infer
inferensi jenis lokal.
' 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
Contoh 2
Contoh berikut menunjukkan bahwa jenis run-time dapat berbeda ketika variabel diidentifikasi sebagai Object
.
' 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
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk