Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Memungkinkan penggunaan inferensi jenis lokal dalam mendeklarasikan variabel.
Sintaksis
Option Infer { On | Off }
Bagian
| Istilah | Definisi |
|---|---|
On |
Fakultatif. Mengaktifkan inferensi jenis lokal. |
Off |
Fakultatif. Menonaktifkan inferensi jenis lokal. |
Komentar
Untuk mengatur Option Infer dalam file, ketik 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 ditetapkan dalam IDE atau pada baris perintah, nilai dalam file memiliki prioritas.
Saat Anda mengatur Option Infer ke On, Anda dapat mendeklarasikan variabel lokal tanpa secara eksplisit menyatakan jenis data. Pengkompilasi 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.
Cuplikan layar berikut menunjukkan IntelliSense saat Opsi Infer aktif:
Dalam ilustrasi berikut, Option Infer dinonaktifkan. Variabel dalam deklarasi Dim someVar = 2 dinyatakan sebagai Object inferensi berdasarkan jenis. Dalam contoh ini, pengaturan Opsi Ketat diatur ke Nonaktif pada Halaman Kompilasi, Perancang Proyek (Visual Basic).
Cuplikan layar berikut menunjukkan IntelliSense saat Infer Opsi nonaktif:
Nota
Ketika variabel dideklarasikan sebagai Object, jenis run-time dapat berubah saat program sedang berjalan. Visual Basic melakukan operasi yang disebut tinju dan membuka kotak untuk mengonversi antara Object jenis nilai dan , yang membuat eksekusi lebih lambat. Untuk informasi tentang tinju dan membuka kotak, 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.
Saat Pernyataan Infer Opsi Tidak Ada
Jika kode sumber tidak berisi Option Infer pernyataan, pengaturan Infer opsi pada Halaman Kompilasi, Perancang Proyek (Visual Basic) digunakan. Jika pengkompilasi baris perintah digunakan, opsi -optioninfer compiler digunakan.
Untuk mengatur Infer Opsi 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, pengaturan Infer opsi pada tab Kompilasi diatur ke pengaturan Infer Opsi dalam kotak dialog Default VB . Untuk mengakses kotak dialog Default VB , pada menu Alat , klik Opsi. Dalam kotak dialog Opsi , perluas Proyek dan Solusi, lalu klik Default VB. Pengaturan default awal dalam Default VB adalah On.
Untuk mengatur Infer Opsi pada baris perintah
Sertakan opsi pengkompilasi -optioninfer dalam perintah vbc .
Jenis dan Nilai Data Default
Tabel berikut ini menjelaskan hasil berbagai kombinasi menentukan jenis data dan penginisialisasi dalam pernyataan Dim .
| Jenis data yang ditentukan? | Inisialisasi ditentukan? | Contoh | Hasil |
|---|---|---|---|
| Tidak. | Tidak. | Dim qty |
Jika Option Strict nonaktif (default), variabel diatur ke Nothing.Jika Option Strict aktif, terjadi kesalahan waktu kompilasi. |
| Tidak. | Ya | Dim qty = 5 |
Jika Option Infer aktif (default), variabel mengambil jenis data penginisialisasi. Lihat Inferensi Jenis Lokal.Jika Option Infer nonaktif dan Option Strict nonaktif, variabel mengambil jenis data .ObjectJika Option Infer nonaktif dan Option Strict aktif, kesalahan waktu kompilasi terjadi. |
| Ya | Tidak. | Dim qty As Integer |
Variabel diinisialisasi ke nilai default untuk jenis data. Untuk informasi selengkapnya, lihat Pernyataan Redup. |
| Ya | Ya | Dim qty As Integer = 5 |
Jika jenis data penginisialisasi tidak dapat dikonversi ke jenis data yang ditentukan, kesalahan waktu kompilasi terjadi. |
Contoh 1
Contoh berikut menunjukkan bagaimana Option Infer pernyataan mengaktifkan 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