Option Strict Deyimi
Örtük veri türü dönüştürmelerini yalnızca genişletme dönüştürmeleriyle kısıtlar, geç bağlamaya izin vermez ve bir Object
türe neden olan örtük yazmaya izin vermez.
Sözdizimi
Option Strict { On | Off }
Parça
Süre | Tanım |
---|---|
On |
isteğe bağlı. Denetimi etkinleştirir Option Strict . |
Off |
isteğe bağlı. Option Strict Denetimi devre dışı bırakır. |
Açıklamalar
Bir dosyada göründüğünde Option Strict On
veya Option Strict
göründüğünde, aşağıdaki koşullar derleme zamanı hatasına neden olur:
Örtük daraltma dönüştürmeleri
Geç bağlama
Bir
Object
türle sonuçlanabilecek örtük yazma
Not
Derleme Sayfası, Project Tasarım Aracı (Visual Basic) üzerinde ayarlayabileceğiniz uyarı yapılandırmalarında, derleme zamanı hatasına neden olan üç koşula karşılık gelen üç ayar vardır. Bu ayarların nasıl kullanılacağı hakkında bilgi için, bu konunun devamında yer alan IDE'de uyarı yapılandırmalarını ayarlamak için bölümüne bakın.
deyimi Option Strict Off
, ilişkili IDE ayarları bu hataları veya uyarıları açmayı belirtse bile üç koşul için de hata ve uyarı denetimini kapatır. deyimi Option Strict On
, ilişkili IDE ayarları bu hataları veya uyarıları kapatmak için belirtse bile üç koşul için de hata ve uyarı denetimini açar.
Kullanılırsa, deyimi bir dosyadaki Option Strict
diğer kod deyimlerinden önce görünmelidir.
olarak On
ayarladığınızdaOption Strict
, Visual Basic tüm programlama öğeleri için veri türlerinin belirtildiğini denetler. Veri türleri açıkça belirtilebilir veya yerel tür çıkarımı kullanılarak belirtilebilir. Aşağıdaki nedenlerle tüm programlama öğeleriniz için veri türlerini belirtmeniz önerilir:
Değişkenleriniz ve parametreleriniz için IntelliSense desteği sağlar. Bu, kod yazarken özelliklerini ve diğer üyeleri görmenizi sağlar.
Derleyicinin tür denetimi gerçekleştirmesini sağlar. Tür denetimi, tür dönüştürme hataları nedeniyle çalışma zamanında başarısız olabilecek deyimleri bulmanıza yardımcı olur. Ayrıca, bu yöntemleri desteklemeyen nesnelerdeki yöntemlere yapılan çağrıları da tanımlar.
Kodun yürütülmesini hızlandırır. Bunun bir nedeni, bir programlama öğesi için veri türü belirtmezseniz, Visual Basic derleyicisinin bu tür atamasıdır
Object
. Derlenen kodun ve diğer veri türleri arasındaObject
ileri geri dönüştürmesi gerekebilir ve bu da performansı düşürür.
Örtük Daraltma Dönüştürme Hataları
Örtük daraltma dönüştürme hataları, daraltma dönüştürmesi olan örtük bir veri türü dönüştürmesi olduğunda oluşur.
Visual Basic birçok veri türünü diğer veri türlerine dönüştürebilir. Bir veri türünün değeri daha az duyarlıklı veya daha küçük bir kapasiteye sahip bir veri türüne dönüştürüldüğünde veri kaybı oluşabilir. Böyle bir daraltma dönüştürmesi başarısız olursa bir çalışma zamanı hatası oluşur. Option Strict
bu daraltma dönüştürmelerinin derleme zamanı bildirimini sağlar, böylece bunları önleyebilirsiniz. Daha fazla bilgi için bkz . Örtük ve Açık Dönüştürmeler ve Genişletme ve Daraltma Dönüştürmeleri.
Hatalara neden olabilecek dönüştürmeler, ifadelerde gerçekleşen örtük dönüştürmeleri içerir. Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
Dizeleri & İşleci'ni kullanarak birleştirdiğinizde, dizelere yapılan tüm dönüştürmelerin genişlediği kabul edilir. Bu nedenle bu dönüştürmeler açık olsa Option Strict
bile örtük bir daraltma dönüştürme hatası oluşturmaz.
Karşılık gelen parametreden farklı bir veri türüne sahip bağımsız değişkeni olan bir yöntemi çağırdığınızda, daraltma dönüştürmesi açıksa Option Strict
derleme zamanı hatasına neden olur. Genişletme dönüştürmesi veya açık dönüştürme kullanarak derleme zamanı hatasını önleyebilirsiniz.
Örtük daraltma dönüştürme hataları, bir For Each…Next
koleksiyondaki öğelerden döngü denetimi değişkenine dönüştürmeler için derleme zamanında gizleniyor. Bu, açık olsa Option Strict
bile oluşur. Daha fazla bilgi için, Her İçin... bölümündeki "Dönüştürmeleri Daraltma" bölümüne bakın. Next Deyimi.
Geç Bağlama Hataları
Türünde olduğu bildirilen bir değişkenin özelliğine veya yöntemine Object
atandığında nesne geç bağlanır. Daha fazla bilgi için bkz . Erken ve Geç Bağlama.
Örtük Nesne Türü Hataları
Bildirilen değişken için uygun bir tür çıkarılamadığında örtük nesne türü hataları oluşur, bu nedenle türü Object
çıkarılır. Bu öncelikle bir yan tümcesi kullanmadan As
bir Dim
değişken bildirmek için bir deyimi kullandığınızda oluşur ve Option Infer
kapalıdır. Daha fazla bilgi için bkz . Option Infer Deyimi ve Visual Basic Dil Belirtimi.
Yöntem parametreleri için As
yan tümcesi kapalıysa Option Strict
isteğe bağlıdır. Ancak, herhangi bir parametre bir As
yan tümcesi kullanıyorsa, tümünün bunu kullanması gerekir. Açıksa Option Strict
, tüm parametre tanımları As
için yan tümcesi gereklidir.
Yan tümcesi kullanmadan As
bir değişken bildirir ve olarak Nothing
ayarlarsanız değişkeninin Object
türü vardır. Bu durumda açık ve Option Infer
açık olduğunda Option Strict
derleme zamanı hatası oluşmaz. Bunun bir örneğidir Dim something = Nothing
.
Varsayılan Veri Türleri ve Değerleri
Aşağıdaki tabloda, Dim Deyiminde veri türünü ve başlatıcıyı belirtmenin çeşitli bileşimlerinin sonuçları açıklanmaktadır.
Veri türü belirtildi mi? | Başlatıcı belirtildi mi? | Örnek | Sonuç |
---|---|---|---|
Hayır | Hayır | Dim qty |
Kapalıysa Option Strict (varsayılan), değişkeni olarak Nothing ayarlanır.Açıksa Option Strict , derleme zamanı hatası oluşur. |
Hayır | Evet | Dim qty = 5 |
açıksa Option Infer (varsayılan), değişken başlatıcının veri türünü alır. Bkz. Yerel Tür Çıkarımı.kapalıysa ve Option Strict kapalıysa Option Infer değişkeni veri türünü Object alır.Kapalı ve Option Strict açıksa Option Infer derleme zamanı hatası oluşur. |
Yes | Hayır | Dim qty As Integer |
Değişken, veri türü için varsayılan değere başlatılır. Daha fazla bilgi için bkz . Dim Deyimi. |
Yes | Yes | Dim qty As Integer = 5 |
Başlatıcının veri türü belirtilen veri türüne dönüştürülemezse, derleme zamanı hatası oluşur. |
Bir Seçenek Katı Deyimi Olmadığında
Kaynak kod bir Option Strict
deyim içermiyorsa, Derleme Sayfası, Project Tasarım Aracı (Visual Basic) üzerindeki Seçenek katı ayarı kullanılır. Derleme Sayfası, hata oluşturan koşullar üzerinde ek denetim sağlayan ayarlara sahiptir.
Komut satırı derleyicisini kullanıyorsanız için bir ayar belirtmek için Option Strict
-optionstrict derleyicisi seçeneğini kullanabilirsiniz.
IDE'de Option Strict ayarlamak için
Not
Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için bkz. IDE’yi kişiselleştirme.
Çözüm Gezgini'da bir proje seçin. Proje menüsünde Özellikler'e tıklayın.
Derle sekmesinde, Seçenek Katı kutusundaki değeri ayarlayın.
IDE'de uyarı yapılandırmalarını ayarlamak için
Deyimi yerine Option Strict
Project Tasarım Aracı (Visual Basic) Derleme Sayfası'nı kullandığınızda, hata oluşturan koşullar üzerinde ek denetime sahip olursunuz. Derleme Sayfasının Uyarı yapılandırmaları bölümünde, açık olduğunda Option Strict
derleme zamanı hatasına neden olan üç koşula karşılık gelen ayarlar bulunur. Aşağıdaki ayarlar şunlardır:
Örtük dönüştürme
Geç bağlama; arama çalışma zamanında başarısız olabilir
Örtük tür; nesne varsayıldı
Seçenek Katı seçeneğini Açık olarak ayarladığınızda, bu uyarı yapılandırma ayarlarının üçü de Hata olarak ayarlanır. Seçenek Katıseçeneğini Kapalı olarak ayarladığınızda, üç ayar da Yok olarak ayarlanır.
Her uyarı yapılandırma ayarını Tek tek Yok, Uyarı veya Hata olarak değiştirebilirsiniz. Üç uyarı yapılandırma ayarı da Hata olarak ayarlandıysa, On
kutuda görünürOption strict
. Üçü de Yok olarak ayarlandıysa, Off
bu kutuda görünür. Bu ayarların diğer tüm bileşimleri için (özel) görüntülenir.
Yeni projeler için Seçenek Katı varsayılan ayarını ayarlamak için
Proje oluşturduğunuzda, Derle sekmesindeki Option Strict ayarı, Seçenekler iletişim kutusundaki Seçenek Katı ayarına ayarlanır.
Bu iletişim kutusunda ayarlamak Option Strict
için Araçlar menüsünde Seçenekler'e tıklayın. Seçenekler iletişim kutusunda Projeler ve Çözümler'i genişletin ve VB Varsayılanları'na tıklayın. VB Varsayılanları'ndaki ilk varsayılan ayardırOff
.
Komut satırında Option Strict ayarlamak için
vbc komutuna -optionstrict derleyicisi seçeneğini ekleyin.
Örnek 1
Aşağıdaki örneklerde, dönüştürmeleri daraltan örtük tür dönüştürmelerinin neden olduğu derleme zamanı hataları gösterilmektedir. Bu hata kategorisi, Derleme Sayfasındaki Örtük dönüştürme koşuluna karşılık gelir.
' 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
Örnek 2
Aşağıdaki örnekte, geç bağlamanın neden olduğu derleme zamanı hatası gösterilmektedir. Bu hata kategorisi Geç bağlamaya karşılık gelir; Derleme Sayfasında çağrı çalışma zamanındabaşarısız olabilir.
' 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
Örnek 3
Aşağıdaki örneklerde örtük türüyle bildirilen değişkenlerin neden olduğu hatalar gösterilmektedir Object
. Bu hata kategorisi Örtük türe karşılık gelir; Derleme Sayfasında nesne koşulu varsayılır.
' 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
Ayrıca bkz.
- Genişletme ve Daraltma Dönüştürmeleri
- Örtük ve Açık Dönüştürmeler
- Derleme Sayfası, Proje Tasarımcısı (Visual Basic)
- Option Explicit Deyimi
- Tür Dönüştürme İşlevleri
- Nasıl yapılır: Bir Nesnenin Üyelerine Erişme
- XML'de Katıştırılmış İfadeler
- Gevşek Temsilci Dönüştürme
- Office Çözümlerinde Geç Bağlama
- -optionstrict
- Visual Basic Varsayılanları, Projeler, Seçenekler İletişim Kutusu