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 jenisnyaObject. Kode yang dikompilasi mungkin harus dikonversi bolak-balik antara Object 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.

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

  2. 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