Pernyataan Ketat Opsi
Membatasi jenis data implisit hanya kepada konversi pelebaran, tidak mengijinkan pengikatan akhir, dan tidak mengijinkan pengetikan implisit yang menghasilkan suatu jenisObject
.
Sintaks
Option Strict { On | Off }
Generator
Term | Definisi |
---|---|
On |
Opsional. Option Strict Mengaktifkan pemeriksaan. |
Off |
Opsional. Option Strict Menonaktifkan pemeriksaan. |
Keterangan
Saat Option Strict On
atau Option Strict
muncul dalam file, kondisi berikut menyebabkan kesalahan waktu kompilasi:
Konversi penyempitan implisit
Pengikatan akhir
Pengetikan implisit yang menghasilkan
Object
jenis
Catatan
Dalam konfigurasi peringatan yang dapat Anda atur di Halaman Kompilasi, Perancang Proyek (Visual Basic), ada tiga setelan yang sesuai dengan tiga kondisi yang menyebabkan kesalahan waktu kompilasi. Untuk informasi tentang cara menggunakan setelan ini, lihat Untuk mengatur konfigurasi peringatan di IDE nanti dalam topik ini.
Pernyataan ini Option Strict Off
menonaktifkan pemeriksaan kesalahan dan peringatan untuk ketiga kondisi, bahkan jika setelan IDE terkait menentukan untuk mengaktifkan kesalahan atau peringatan ini. Pernyataan ini Option Strict On
mengaktifkan pemeriksaan kesalahan dan peringatan untuk ketiga kondisi, bahkan jika setelan IDE terkait menentukan untuk mengaktifkan kesalahan atau peringatan ini.
Jika digunakan, Option Strict
pernyataan harus muncul sebelum pernyataan kode lain dalam file.
Saat Anda mengatur Option Strict
ke On
, Visual Basic memeriksa bahwa jenis data ditentukan untuk semua elemen pemrograman. Jenis data dapat ditentukan secara eksplisit, atau ditentukan dengan menggunakan inferensi jenis lokal. Menentukan jenis data untuk semua elemen pemrograman Anda disarankan, karena alasan berikut:
Ini memungkinkan dukungan IntelliSense untuk variabel dan parameter Anda. Ini memungkinkan Anda untuk melihat properti mereka dan anggota lain saat Anda mengetik kode.
Ini memungkinkan penyusun untuk melakukan pemeriksaan jenis. Pemeriksaan jenis membantu Anda menemukan pernyataan yang dapat gagal pada durasi karena kesalahan konversi jenis. Ini juga mengidentifikasi panggilan ke metode pada objek yang tidak mendukung metode tersebut.
Ini mempercepat eksekusi kode. Salah satu alasannya adalah jika Anda tidak menentukan jenis data untuk elemen pemrograman, penyusun Visual Basic menetapkan jenisnya
Object
. Kode yang dikompilasi mungkin harus dikonversi bolak-balik antaraObject
dan jenis data lainnya, yang mengurangi performa.
Kesalahan Konversi Penyempitan Implisit
Kesalahan konversi penyempitan implisit terjadi ketika ada konversi jenis data implisit yang merupakan konversi penyempitan.
Visual Basic dapat mengonversi banyak jenis data ke jenis data lainnya. Kehilangan data dapat terjadi ketika nilai satu jenis data dikonversi ke jenis data yang memiliki presisi kurang atau kapasitas yang lebih kecil. Kesalahan run-time terjadi jika konversi penyempitan seperti itu gagal. Option Strict
memastikan pemberitahuan waktu kompilasi dari penyempitan konversi ini sehingga Anda dapat menghindarinya. Untuk informasi selengkapnya, lihat Konversi Implisit dan Eksplisit serta Konversi Pelebaran dan Penyempitan.
Konversi yang dapat menyebabkan kesalahan termasuk konversi implisit yang terjadi dalam ekspresi. Untuk mengetahui informasi selengkapnya, lihat topik berikut:
Saat Anda menggabungkan string dengan menggunakan Operator &, semua konversi ke string dianggap melebar. Jadi konversi ini tidak menghasilkan kesalahan konversi yang mempersempit implisit, bahkan jika Option Strict
aktif.
Saat Anda memanggil metode yang memiliki argumen yang memiliki jenis data yang berbeda dari parameter terkait, konversi penyempitan menyebabkan kesalahan waktu kompilasi jika Option Strict
aktif. Anda dapat menghindari kesalahan waktu kompilasi dengan menggunakan konversi pelebaran atau konversi eksplisit.
Kesalahan konversi penyempitan implisit ditekan pada waktu kompilasi untuk konversi dari elemen dalam For Each…Next
koleksi ke variabel kontrol perulangan. Ini terjadi bahkan jika Option Strict
aktif. Untuk informasi selengkapnya, lihat bagian "Konversi Penyempitan" di Untuk setiap.... Pernyataan Selanjutnya.
Kesalahan Pengikatan Akhir
Objek terlambat terikat ketika ditetapkan ke properti atau metode variabel yang dinyatakan berjenis Object
. Untuk informasi selengkapnya, lihat Pengikatan Awal dan Akhir.
Kesalahan jenis Objek Implisit
Kesalahan jenis objek implisit terjadi ketika jenis yang sesuai tidak dapat disimpulkan untuk variabel yang dideklarasikan, sehingga jenis Object
disimpulkan. Ini terutama terjadi ketika Anda menggunakan Dim
pernyataan untuk mendeklarasikan variabel tanpa menggunakan klausul As
, dan Option Infer
nonaktif. Untuk informasi selengkapnya, lihat Pernyataan Infer Opsi dan Spesifikasi Bahasa Visual Basic.
Untuk parameter metode, As
klausul bersifat opsional jika Option Strict
nonaktif. Namun, jika ada satu parameter yang As
menggunakan klausul, mereka semua harus menggunakannya. Jika Option Strict
aktif, As
klausul diperlukan untuk setiap definisi parameter.
Jika Anda mendeklarasikan variabel tanpa menggunakan klausul As
dan mengaturnya ke Nothing
, variabel memiliki jenis Object
. Tidak ada kesalahan waktu kompilasi yang terjadi dalam kasus ini ketika Option Strict
aktif dan Option Infer
aktif. Contohnya adalah Dim something = Nothing
.
Nilai dan Jenis Data Default
Tabel berikut ini menjelaskan hasil berbagai kombinasi dari menentukan jenis data dan penginisialisasi dalam Pernyataan Dim.
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. |
Ketika Pernyataan Ketat Opsi Tidak Ada
Jika kode sumber tidak berisi Option Strict
pernyataan, setelan Ketat opsi pada Halaman Kompilasi, Perancang Proyek (Visual Basic) digunakan. Halaman Kompilasi memiliki setelan yang memberikan kontrol tambahan atas kondisi yang menghasilkan kesalahan.
Jika Anda menggunakan penyusun baris perintah, Anda dapat menggunakan opsi penyusun -optionstrict untuk menentukan setelan untuk Option Strict
.
Untuk mengatur Option Strict di IDE
Catatan
Komputer Anda mungkin memperlihatkan nama atau lokasi yang berbeda untuk beberapa elemen antarmuka pengguna Visual Studio dalam petunjuk berikut. Edisi Visual Studio yang Anda miliki dan setelan yang Anda gunakan menentukan elemen-elemen ini. Untuk informasi selengkapnya, lihat Mempersonalisasi IDE.
Di Penjelajah Solusi, pilih proyek. Pada menu Proyek, klik Properti.
Pada tab Kompilasi, atur nilai dalam kotak Option Strict.
Untuk mengatur konfigurasi peringatan di IDE
Saat Anda menggunakan Halaman Kompilasi, Perancang Proyek (Visual Basic) alih-alih Option Strict
pernyataan, Anda memiliki kontrol tambahan atas kondisi yang menghasilkan kesalahan. Bagian Konfigurasi peringatan dari Halaman Kompilasi memiliki setelan yang sesuai dengan tiga kondisi yang menyebabkan kesalahan waktu kompilasi saat Option Strict
aktif. Berikut ini adalah setelan berikut:
Konversi Implisit
Pengikatan Akhir; panggilan bisa gagal pada run time
Jenis Implisit; objek yang diasumsikan
Saat Anda mengatur Option Strict ke Aktif, ketiga pengaturan konfigurasi peringatan ini diatur ke Kesalahan. Saat Anda mengatur Option Strict ke Nonaktif, ketiga pengaturan diatur ke Tidak Ada.
Anda dapat mengubah setiap pengaturan konfigurasi peringatan satu per satu menjadi Tidak Ada, Peringatan, atau Kesalahan. Jika ketiga pengaturan konfigurasi peringatan diatur ke Kesalahan, On
muncul di kotak Option strict
. Jika ketiganya diatur ke Tidak Ada, Off
muncul dalam kotak ini. Untuk kombinasi lain dari setelan ini, (kustom) muncul.
Untuk mengatur setelan default Option Strict untuk proyek baru
Saat Anda membuat proyek, pengaturan Option Strict pada tab Kompilasi diatur ke setelanOption Strict dalam kotak dialog Opsi.
Untuk mengatur Option Strict
dalam kotak dialog ini, pada menu Tools, klik Opsi. Dalam kotak dialog Opsi, perluas Proyek dan Solusi, lalu klik Default VB. Setelan default awal di Default VB adalah Off
.
Untuk mengatur Option Strict pada baris perintah
Sertakan opsi penyusun -optioninfer dalam perintah vbc.
Contoh 1
Contoh berikut menunjukkan kesalahan waktu kompilasi yang disebabkan oleh konversi jenis implisit yang mempersempit konversi. Kategori kesalahan ini sesuai dengan kondisi konversi Implisit di Halaman Kompilasi.
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim cyclists As Long = 5
Dim bicycles As Integer = cyclists
'Dim bicycles As Integer = CType(cyclists, Integer)
'Dim bicycles As Integer = CInt(cyclists)
'Dim bicycles As Integer = Convert.ToInt32(cyclists)
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim charVal As Char = "a"
'Dim charVal As Char = "a"c
'Dim charVal As Char = CType("a", Char)
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the string is implicitly converted
' to a Double, and then is added to the other number.
Dim myAge As Integer = "34" + 6
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the floating-point number
' is implicitly converted to a Long.
Dim num = 123.45 \ 10
Contoh 2
Contoh berikut menunjukkan kesalahan waktu kompilasi yang disebabkan oleh pengikatan akhir. Kategori kesalahan ini sesuai dengan pengikatan akhir; panggilan dapat gagal pada kondisi durasi di Halaman Kompilasi.
' If Option Strict is on, this late binding
' causes a compile-time error. If Option Strict
' is off, the late binding instead causes a
' run-time error.
Dim punchCard As New Object
punchCard.Column = 5
Contoh 3
Contoh berikut menunjukkan kesalahan yang disebabkan oleh variabel yang dinyatakan dengan jenis implisitObject
. Kategori kesalahan ini sesuai dengan jenis implisit; objek yang diasumsikan kondisi di Halaman Kompilasi.
' If Option Strict is on and Option Infer is off,
' this Dim statement without an As clause
' causes a compile-time error.
Dim cardReaders = 5
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the variable is set to Nothing.
Dim dryWall
' If Option Strict is on, this parameter without an
' As clause causes a compile-time error.
Private Sub DetectIntergalacticRange(ByVal photonAttenuation)
End Sub
Lihat juga
- Memperluas dan Mempersempit Konversi
- Konversi Implisit dan Eksplisit
- Kompilasi Halaman, Desainer Project (Visual Basic)
- Pernyataan Eksplisit Opsi
- Fungsi Konversi Jenis
- Cara: Mengakses Anggota Objek
- Ekspresi Tersemat dalam XML
- Melonggarkan Konversi Delegasi
- Pengikatan Akhir dalam Solusi Office
- -optionstrict
- Visual Basic Default, Proyek, Kotak Dialog Opsi