Inferensi Jenis Lokal (Visual Basic)
Pengompilasi Visual Basic menggunakan inferensi jenis untuk menentukan jenis data variabel lokal yang dideklarasikan tanpa klausul As
. Pengompilasi 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, baik num1
dan num2
diketik dengan kuat sebagai bilangan bulat.
Public Sub inferenceExample()
' Using explicit typing.
Dim num1 As Integer = 3
' Using local type inference.
Dim num2 = 3
End Sub
Catatan
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
.
Catatan
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 diklasifikasikan num2
sebagai Object
dengan Option Strict
nonaktif. Demikian pula, inferensi jenis lokal tidak berlaku untuk variabel tingkat prosedur yang dinyatakan sebagai Static
.
Inferensi Ketik vs. Pengikatan Lambat
Kode yang menggunakan inferensi jenis menyerupai kode yang bergantung pada pengikatan lambat. Namun, inferensi ketik mengetik dengan kuat variabel daripada membiarkannya sebagai Object
. Pengompilasi menggunakan penginisialisasi variabel untuk menentukan jenis variabel pada waktu kompilasi untuk menghasilkan kode terikat awal. Dalam contoh sebelumnya, num2
, seperti num1
, di ketik sebagai Integer
.
Perilaku variabel terikat awal berbeda dari variabel yang terlambat terikat, yang jenisnya hanya diketahui pada durasi. Mengetahui jenisnya lebih awal memungkinkan pengompilasi mengidentifikasi masalah sebelum eksekusi, mengalokasikan memori dengan tepat, dan melakukan pengoptimalan lainnya. Pengikatan awal juga memungkinkan integrated development environment (IDE) Visual Basic untuk memberikan IntelliSense Help tentang anggota objek. Pengikatan awal juga lebih disukai untuk performa. Ini karena semua data yang disimpan dalam variabel yang terlambat terikat harus dibungkus sebagai jenis Object
, dan mengakses anggota jenis pada durasi membuat program lebih lambat.
Contoh
Inferensi jenis terjadi ketika variabel lokal dinyatakan tanpa klausul As
dan diinisialisasi. Pengompilasi 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 larik 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 untuk menggunakan inferensi jenis untuk menentukan jenis variabel kontrol perulangan. Dalam kode berikut, pengompilasi menyimpulkan bahwa number
adalah Integer
karena someNumbers2
dari contoh sebelumnya adalah larik bilangan bulat.
Dim total = 0
For Each number In someNumbers2
total += number
Next
Inferensi jenis lokal dapat digunakan dalam pernyataan Using
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 fungsi yang dikembalikan, seperti yang ditunjukkan contoh berikut. Baik pList1
dan pList2
adalah larik proses karena Process.GetProcesses
mengembalikan larik proses.
' Using explicit typing.
Dim pList1() As Process = Process.GetProcesses()
' Using local type inference.
Dim pList2 = Process.GetProcesses()
Option Infer
Option Infer
memungkinkan Anda menentukan apakah inferensi jenis lokal diperbolehkan 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 pengompilasi adalah Option Infer On
.
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.
Untuk informasi selengkapnya, lihat Opsi Pernyataan Infer dan Halaman Kompilasi, Project Designer (Visual Basic).
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