Option Strict Deyimi
Örtük veri türü dönüşümlerini yalnızca genişletme dönüştürmelerine kısıtlar, geç bağlamaya izin vermez ve bir tür ile sonuçlanan örtülü yazmaya izin vermez Object .
Syntax
Option Strict { On | Off }
Bölümler
| Süre | Tanım |
|---|---|
On |
İsteğe bağlı. Denetlemeye izin vermez Option Strict . |
Off |
İsteğe bağlı. Denetlemeyi devre dışı bırakır Option Strict . |
Açıklamalar
Option Strict On Option Strict Bir dosyada olduğunda veya göründüğünde, aşağıdaki koşullar derleme zamanı hatasına neden olur:
Örtük daraltma dönüşümleri
Geç bağlama
Bir tür ile sonuçlanan örtük yazma
Object
Not
derleme sayfasında, Project tasarımcı (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 daha fazla bilgi için, bu konunun ilerleyen kısımlarında IDE 'de uyarı yapılandırması ayarlamak için bölümüne bakın.
Option Strict Offİfade, ILIŞKILI IDE ayarları bu hataları veya uyarıları açmak için belirtse bile, her üç koşulun hata ve uyarı denetimini devre dışı bırakır. Option Strict Onİfade, ILIŞKILI IDE ayarları bu hataları veya uyarıları kapatmak için belirtse bile, her üç koşulun hata ve uyarı denetimini etkinleştirir.
Kullanıldıysa, Option Strict deyimi bir dosyadaki diğer kod deyimlerinin önüne gelmelidir.
Option Strictolarak ayarladığınızda On , 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 nedenlerden dolayı tüm programlama öğelerinizin veri türlerini belirtme önerilir:
Değişkenleriniz ve parametreleriniz için IntelliSense desteği sunar. Bu, kod yazarken özelliklerini ve diğer üyelerini görmenizi sağlar.
Derleyicinin tür denetlemesi gerçekleştirmesini sağlar. Tür denetimi, tür dönüştürme hataları nedeniyle çalışma zamanında başarısız olan deyimler bulmanıza yardımcı olur. Ayrıca, bu yöntemleri desteklemeyen nesnelerdeki yöntemlere yapılan çağrıları tanımlar.
Kod yürütülmesini hızlandırır. bunun bir nedeni, bir programlama öğesi için bir veri türü belirtplanlamıyorsanız Visual Basic derleyicisinin bu türü atamasını sağlamaz
Object. Derlenmiş kodun ve diğer veri türleri arasında geri ve ileri dönüştürülmesi gerekebilirObjectve bu da performansı azaltır.
Örtük daraltma dönüştürme hataları
Örtük daraltma dönüştürme hataları, daraltma dönüştürmesi olan bir örtük 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ık veya daha küçük bir kapasiteye sahip bir veri türüne dönüştürüldüğünde veri kaybı oluşabilir. Bu tür 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ürmelerinde 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 oluşan örtük dönüşümler içerir. Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
& işlecinikullanarak dizeleri birleştirme sırasında, dizelerin tüm dönüştürmeleri genişletme olarak kabul edilir. Bu nedenle, açık olsa bile bu dönüştürmeler örtük bir daraltma dönüştürme hatası oluşturmaz Option Strict .
Karşılık gelen parametresinden farklı bir veri türüne sahip bir bağımsız değişkeni olan bir yöntemi çağırdığınızda, bir daraltma dönüştürmesi açık olursa derleme zamanı hatasına neden olur Option Strict . Bir genişletme dönüşümü veya açık bir dönüştürme kullanarak derleme zamanı hatasından kaçınabilirsiniz.
Örtük daraltma dönüştürme hataları For Each…Next , bir koleksiyondaki öğelerden döngü denetim değişkenine dönüşümler için derleme zamanında bastırılır. Açık olsa bile bu durum oluşur Option Strict . Daha fazla bilgi için, her biri Için içindeki "dönüştürmeleri daraltma" bölümüne bakın ... Sonraki Ifade.
Geç bağlama hataları
Bir nesne, tür olarak belirtilen bir özelliğin veya yöntemin bir özelliğine atandığında geç bağlanır Object . Daha fazla bilgi için bkz. erken ve geç bağlama.
Örtük nesne türü hataları
Örtük nesne türü hataları, tanımlı bir değişken için uygun bir tür çıkarsanmadığında oluşur, bu nedenle bir türü Object algılanır. Bu öncelikle Dim , bir yan tümce kullanmadan bir değişkeni bildirmek için bir deyimi kullandığınızda oluşur As ve Option Infer kapalı olur. daha fazla bilgi için bkz. Option ınfer deyimleri ve Visual Basic Language belirtimi.
Yöntem parametreleri için, As yan tümcesi kapalıysa isteğe bağlıdır Option Strict . Ancak, herhangi bir parametre bir As yan tümce kullanıyorsa, tümünün onu kullanması gerekir. Option StrictAçık ise, As yan tümce her parametre tanımı için gereklidir.
Bir yan tümce kullanmadan bir değişken bildirir As ve öğesini olarak ayarlarsanız Nothing , değişkenin türü vardır Object . Bu durumda açık ve açık olduğunda derleme zamanı hatası oluşmaz Option Strict Option Infer . Buna bir örnektir Dim something = Nothing .
Varsayılan veri türleri ve değerleri
Aşağıdaki tabloda, bir Dim ifadesindeveri türünü ve başlatıcıyı belirtmenin çeşitli birleşimlerinin sonuçları açıklanmaktadır.
| Veri türü belirtildi mi? | Başlatıcı belirtildi mi? | Örnek | Sonuç |
|---|---|---|---|
| Hayır | Hayır | Dim qty |
Option StrictKapalıysa (varsayılan), değişkeni olarak ayarlanır Nothing .Option StrictAçık ise, bir derleme zamanı hatası oluşur. |
| Hayır | Yes | Dim qty = 5 |
Option InferAçık ise (varsayılan), değişkeni başlatıcının veri türünü alır. Bkz. Yerel tür çıkarımı.Option InferKapalıysa ve Option Strict kapalıysa, değişken veri türünü alır Object .Option InferKapalıysa ve açık ise Option Strict , bir derleme zamanı hatası oluşur. |
| Yes | Hayır | Dim qty As Integer |
Değişken, veri türü için varsayılan değer olarak başlatılır. Daha fazla bilgi için bkz. Dim deyimleri. |
| Yes | Yes | Dim qty As Integer = 5 |
Başlatıcının veri türü belirtilen veri türüne dönüştürülebilir değilse, bir derleme zamanı hatası oluşur. |
Option Strict bir Ifade yoksa
kaynak kodu bir Option Strict ifade içermiyorsa, derleme sayfasındaki katı ayarı Project tasarımcı (Visual Basic) kullanılır. Derleme sayfasında , hata oluşturan koşullar üzerinde ek denetim sağlayan ayarlar bulunur.
Komut satırı derleyicisini kullanıyorsanız, için bir ayar belirtmek üzere -OptionStrict derleyici seçeneğini kullanabilirsiniz Option Strict .
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 bir proje seçin. Project menüsünde özellikler' e tıklayın.
Derle sekmesinde, katı kutu seçeneğini belirleyin.
IDE 'de uyarı yapılandırması ayarlamak için
derleme sayfasını, bir ifade yerine Project tasarımcı (Visual Basic) kullandığınızda Option Strict , hata oluşturan koşullar üzerinde ek denetime sahip olursunuz. Derleme Sayfasının Uyarı yapılandırmaları bölümünde, olduğunda derleme zamanı hatasına neden olan üç özel durumla ilgili Option Strict ayarlar vardır. Bu ayarlar aşağıdaki şekildedir:
Örtük dönüştürme
Geç bağlama; çağrısı çalışma zamanında başarısız olabilir
Örtülü tür; nesne varsayıldı
Option Strict değerini Açık olarak ayarlarsanız, bu uyarı yapılandırma ayarlarının üçü de Hata olarak ayarlanır. Option Strict seçeneğini Kapalı olarak ayarsanız, üç ayar da Yok olarak ayarlanır.
Her uyarı yapılandırma ayarını Yok, Uyarı veya Hata olarak tek tek değiştirebilirsiniz. Üç uyarı yapılandırma ayarı da Hata olarak ayarlanırsa On kutuda Option strict görünür. Üçü de Hiçbiri olarak ayarlanırsa, Off bu kutuda görünür. Bu ayarların diğer bileşimleri için (özel) görüntülenir.
Yeni projeler için Option Strict varsayılan ayarını ayarlamak için
Bir proje seniz, Derle sekmesindeki Option Strict ayarı, Seçenekler iletişim kutusundaki Seçenek Katı ayarına ayarlanır.
Bu iletişim Option Strict kutusunda ayarlamak 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 ardından VB Varsayılanları'a tıklayın. VB Varsayılanları'nın ilk varsayılan ayarı şu şekildedir: Off .
Komut satırına Option Strict ayarlamak için
vbc komutuna -optionstrict derleyici seçeneğini dahil etmek.
Örnek 1
Aşağıdaki örnekler, daraltma dönüştürmeleri olan örtülü tür dönüştürmelerinden kaynaklanan derleme zamanı hatalarını gösterir. Bu hata kategorisi, Derleme Sayfasındaki Örtülü dönüştürme koşuluna karşılık geldi.
' 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 örnek, geç bağlamanın neden olduğu derleme zamanı hatasını gösterir. Bu hata kategorisi Geç bağlamaya karşılık geldi; derleme sayfasındaki çalışma zamanında çağrı baş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 örnekler, örtülü bir türüyle bildirilen değişkenlerin neden olduğu hataları Object gösterir. Bu hata kategorisi Örtülü türe karşılık gelen; Derleme Sayfasında nesne varsayma koşulu.
' 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üşümleri
- Ö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