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.
Membatasi konversi jenis data implisit hanya untuk melebarkan konversi, melarang pengikatan terlambat, dan melarang pengetikan implisit yang menghasilkan Object jenis.
Sintaksis
Option Strict { On | Off }
Bagian
| Istilah | Definisi |
|---|---|
On |
Fakultatif.
Option Strict Mengaktifkan pemeriksaan. |
Off |
Fakultatif.
Option Strict Menonaktifkan pemeriksaan. |
Komentar
Saat Option Strict On atau Option Strict muncul dalam file, kondisi berikut menyebabkan kesalahan waktu kompilasi:
Konversi penyempitan implisit
Pengikatan terlambat
Pengetikan implisit yang menghasilkan
Objectjenis
Nota
Dalam konfigurasi peringatan yang dapat Anda atur di Halaman Kompilasi, Perancang Proyek (Visual Basic), ada tiga pengaturan yang sesuai dengan tiga kondisi yang menyebabkan kesalahan waktu kompilasi. Untuk informasi tentang cara menggunakan pengaturan ini, lihat Untuk mengatur konfigurasi peringatan di IDE nanti dalam topik ini.
Pernyataan menonaktifkan Option Strict Off kesalahan dan pemeriksaan peringatan untuk ketiga kondisi, bahkan jika pengaturan IDE terkait menentukan untuk mengaktifkan kesalahan atau peringatan ini. Pernyataan ini Option Strict On mengaktifkan pemeriksaan kesalahan dan peringatan untuk ketiga kondisi, bahkan jika pengaturan IDE terkait menentukan untuk menonaktifkan 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 pengkompilasi untuk melakukan pemeriksaan jenis. Pemeriksaan jenis membantu Anda menemukan pernyataan yang dapat gagal pada waktu proses 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, pengkompilasi Visual Basic menetapkan jenisnya
Object. Kode yang dikompilasi mungkin harus dikonversi bolak-balik antaraObjectdan jenis data lainnya, yang mengurangi performa.
Kesalahan Konversi Penyempitan Implisit
Kesalahan konversi penyempitan implisit terjadi ketika ada konversi jenis data implisit yang merupakan konversi yang menyempit.
Visual Basic dapat mengonversi banyak jenis data ke tipe data lainnya. Kehilangan data dapat terjadi ketika nilai satu jenis data dikonversi ke jenis data yang memiliki lebih sedikit presisi atau kapasitas yang lebih kecil. Kesalahan run-time terjadi jika konversi yang menyempit seperti itu gagal.
Option Strict memastikan pemberitahuan waktu kompilasi dari konversi yang mempersempit 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 informasi selengkapnya, lihat topik berikut ini:
Saat Anda menggabungkan string dengan menggunakan Operator &, semua konversi ke string dianggap melebar. Jadi konversi ini tidak menghasilkan kesalahan konversi implisit yang menyempit, bahkan jika Option Strict aktif.
Saat Anda memanggil metode yang memiliki argumen yang memiliki jenis data yang berbeda dari parameter yang sesuai, konversi yang menyempit menyebabkan kesalahan waktu kompilasi jika Option Strict aktif. Anda dapat menghindari kesalahan waktu kompilasi dengan menggunakan konversi yang melebar 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 "Mempersempit Konversi" di Untuk Setiap... Pernyataan Berikutnya.
Kesalahan Pengikatan Terlambat
Objek terlambat terikat ketika ditetapkan ke properti atau metode variabel yang dinyatakan berjenis Object. Untuk informasi selengkapnya, lihat Pengikatan Awal dan Terlambat.
Kesalahan Tipe 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 As klausa, 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 klausa diperlukan untuk setiap definisi parameter.
Jika Anda mendeklarasikan variabel tanpa menggunakan As klausul 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.
Jenis dan Nilai Data Default
Tabel berikut ini menjelaskan hasil berbagai kombinasi menentukan jenis data dan penginisialisasi dalam Pernyataan Redup.
| 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. |
Saat Pernyataan Ketat Opsi Tidak Ada
Jika kode sumber tidak berisi Option Strict pernyataan, pengaturan ketat Opsi pada Halaman Kompilasi, Perancang Proyek (Visual Basic) digunakan.
Halaman Kompilasi memiliki pengaturan yang memberikan kontrol tambahan atas kondisi yang menghasilkan kesalahan.
Jika Anda menggunakan pengkompilasi baris perintah, Anda dapat menggunakan opsi pengkompilasi -optionstrict untuk menentukan pengaturan untuk Option Strict.
Untuk mengatur Opsi Ketat di IDE
Nota
Komputer Anda mungkin menampilkan nama atau lokasi yang berbeda untuk beberapa elemen antarmuka pengguna Visual Studio dalam instruksi berikut. Edisi Visual Studio yang Anda miliki dan pengaturan yang Anda gunakan menentukan elemen-elemen ini. Untuk informasi lebih lanjut, lihat Mempersonalisasi IDE.
Di Penjelajah Solusi, pilih proyek. Pada menu Proyek, klik Properti.
Pada tab Kompilasi , atur nilai dalam kotak Opsi Ketat .
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 pengaturan yang sesuai dengan tiga kondisi yang menyebabkan kesalahan waktu kompilasi saat Option Strict aktif. Berikut ini adalah pengaturan berikut:
Konversi implisit
Pengikatan terlambat; panggilan bisa gagal pada waktu proses
Jenis implisit; objek diasumsikan
Saat Anda mengatur Opsi Ketat ke Aktif, ketiga pengaturan konfigurasi peringatan ini diatur ke Kesalahan. Saat Anda mengatur Opsi Ketat ke Nonaktif, ketiga pengaturan diatur ke Tidak Ada.
Anda dapat mengubah setiap pengaturan konfigurasi peringatan secara individual 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 pengaturan ini, (kustom) muncul.
Untuk mengatur pengaturan Default ketat Opsi untuk proyek baru
Saat Anda membuat proyek, pengaturan Opsi Ketat pada tab Kompilasi diatur ke pengaturan Opsi Ketat dalam kotak dialog Opsi .
Untuk mengatur Option Strict dalam kotak dialog ini, pada menu Alat , klik Opsi. Dalam kotak dialog Opsi , perluas Proyek dan Solusi, lalu klik Default VB. Pengaturan default awal dalam Default VB adalah Off.
Untuk mengatur Opsi Ketat pada baris perintah
Sertakan opsi pengkompilasi -optionstrict 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 terlambat. Kategori kesalahan ini sesuai dengan Pengikatan Terlambat; panggilan dapat gagal pada kondisi run time pada 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 dideklarasikan dengan jenis implisit .Object Kategori kesalahan ini sesuai dengan jenis Implisit; kondisi yang diasumsikan objek pada 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
- Memperlebar dan Mempersempit Konversi
- Konversi Implisit dan Eksplisit
- Halaman Kompilasi, Perancang Proyek (Visual Basic)
- Pernyataan Eksplisit Opsi
- Fungsi Konversi Jenis
- Cara: Mengakses Anggota Objek
- Ekspresi Tersemat dalam XML
- Konversi Delegasi Yang Dilonggarkan
- Pengikatan Terlambat di Solusi Office
- -optionstrict
- Default Visual Basic, Proyek, Kotak Dialog Opsi