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.
Pengkompilasi Visual Basic menggunakan inferensi jenis untuk menentukan jenis data variabel lokal yang As dideklarasikan tanpa klausa. Pengkompilasi menyimpulkan jenis variabel dari jenis ekspresi inisialisasi. Ini memungkinkan Anda untuk mendeklarasikan variabel tanpa secara eksplisit menyatakan jenis, seperti yang ditunjukkan dalam contoh berikut. Sebagai hasil dari deklarasi, num1 dan num2 didefinisikan dengan tegas sebagai bilangan bulat.
Public Sub inferenceExample()
' Using explicit typing.
Dim num1 As Integer = 3
' Using local type inference.
Dim num2 = 3
End Sub
Nota
Jika Anda tidak ingin num2 dalam contoh sebelumnya diketik sebagai Integer, Anda dapat menentukan jenis lain dengan menggunakan deklarasi seperti Dim num3 As Object = 3 atau Dim num4 As Double = 3.
Nota
Inferensi jenis hanya dapat digunakan untuk variabel lokal non-statis; tidak dapat digunakan untuk menentukan jenis bidang kelas, properti, atau fungsi.
Inferensi jenis lokal berlaku pada tingkat prosedur. Ini tidak dapat digunakan untuk mendeklarasikan variabel pada tingkat modul (dalam kelas, struktur, modul, atau antarmuka tetapi tidak dalam prosedur atau blok). Jika num2 dalam contoh sebelumnya adalah bidang kelas alih-alih variabel lokal dalam prosedur, deklarasi akan menyebabkan kesalahan dengan Option Strict aktif, dan akan mengklasifikasikan num2 sebagai Object dengan Option Strict nonaktif. Demikian pula, inferensi jenis lokal tidak berlaku untuk variabel tingkat prosedur yang dinyatakan sebagai Static.
Tipe Inferensi vs. Pengikatan Lambat
Kode yang menggunakan inferensi tipe mirip dengan kode yang bergantung pada pengikatan lambat. Namun, inferensi tipe secara kuat menentukan tipe variabel alih-alih membiarkannya sebagai Object. Pengkompilasi menggunakan penginisialisasi variabel untuk menentukan jenis variabel pada waktu kompilasi untuk menghasilkan kode terikat awal. Dalam contoh sebelumnya, num2, seperti num1, ditik sebagai Integer.
Perilaku variabel terikat awal berbeda dari variabel yang terlambat terikat, yang jenisnya hanya diketahui pada waktu proses. Mengetahui jenis awal memungkinkan pengkompilasi mengidentifikasi masalah sebelum eksekusi, mengalokasikan memori dengan tepat, dan melakukan pengoptimalan lainnya. Pengikatan awal juga memungkinkan lingkungan pengembangan terintegrasi Visual Basic (IDE) untuk memberikan Bantuan IntelliSense tentang anggota objek. Pengikatan awal lebih disukai juga untuk performansi. Ini karena semua data yang disimpan dalam variabel yang terikat secara dinamis harus dibungkus sebagai jenis Object, dan mengakses anggota dari jenis ini pada waktu berjalan membuat program lebih lambat.
Contoh
Inferensi jenis terjadi ketika variabel lokal dinyatakan tanpa As klausul dan diinisialisasi. Pengkompilasi menggunakan jenis nilai awal yang ditetapkan sebagai jenis variabel. Misalnya, masing-masing baris kode berikut mendeklarasikan variabel jenis String.
' Using explicit typing.
Dim name1 As String = "Springfield"
' Using local type inference.
Dim name2 = "Springfield"
Kode berikut menunjukkan dua cara yang setara untuk membuat array bilangan bulat.
' Using explicit typing.
Dim someNumbers1() As Integer = New Integer() {4, 18, 11, 9, 8, 0, 5}
' Using local type inference.
Dim someNumbers2 = New Integer() {4, 18, 11, 9, 8, 0, 5}
Lebih mudah menggunakan inferensi jenis untuk menentukan jenis variabel kontrol perulangan. Dalam kode berikut, pengkompilasi menyimpulkan bahwa number adalah Integer karena someNumbers2 dari contoh sebelumnya adalah array bilangan bulat.
Dim total = 0
For Each number In someNumbers2
total += number
Next
Inferensi jenis lokal dapat digunakan dalam Using pernyataan untuk menetapkan jenis nama sumber daya, seperti yang ditunjukkan contoh berikut.
Using proc = New System.Diagnostics.Process
' Insert code to work with the resource.
End Using
Jenis variabel juga dapat disimpulkan dari nilai pengembalian fungsi, seperti yang ditunjukkan contoh berikut. Keduanya pList1 dan pList2 merupakan array proses karena Process.GetProcesses mengembalikan array proses.
' Using explicit typing.
Dim pList1() As Process = Process.GetProcesses()
' Using local type inference.
Dim pList2 = Process.GetProcesses()
Opsi Infer
Option Infer memungkinkan Anda menentukan apakah inferensi jenis lokal diizinkan dalam file tertentu. Untuk mengaktifkan atau memblokir opsi, ketik salah satu pernyataan berikut di awal file.
Option Infer On
Option Infer Off
Jika Anda tidak menentukan nilai untuk Option Infer dalam kode Anda, default pengkompilasi adalah Option Infer On.
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.
Untuk informasi selengkapnya, lihat Opsi Pernyataan Infer dan Halaman Kompilasi, Perancang Proyek (Visual Basic).