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 Onayarladığı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ında Object 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 Objectatandığı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 Nothingayarlarsanız değişkeninin Objecttü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 Nothingayarlanı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ü Objectalı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.

  1. Çözüm Gezgini'da bir proje seçin. Proje menüsünde Özellikler'e tıklayın.

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