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 Inferfile, 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:

Screenshot showing IntelliSense view when Option Infer is on.

Dalam ilustrasi berikut, Option Infer dinonaktifkan. Variabel dalam deklarasi Dim someVar = 2 dinyatakan sebagai Objectberdasarkan 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:

Screenshot showing IntelliSense view when Option Infer is off.

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

  1. Di Penjelajah Solusi, pilih proyek. Pada menu Proyek, klik Properti.

  2. Klik tab Kompilasi.

  3. 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 Dimsuatu 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