Aracılığıyla paylaş


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çalar

Süre Tanım
On Opsiyonel. Denetimi etkinleştirir Option Strict .
Off Opsiyonel. 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

  • Object türüyle sonuçlanabilecek örtük yazma

Uyarı

Derleme Sayfası, Proje Tasarımcısı (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 öğeye Object türünü atamasıdır. 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 için aşağıdaki konulara 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ı

Nesne, Objecttüründe olduğu bildirilen bir değişkenin özelliğine veya yöntemine atandığında 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 Object türü çıkarılır. Bu öncelikle bir Dim yan tümcesi kullanmadan bir değişken bildirmek için bir As deyimi kullandığınızda ve Option Infer kapalı olduğunda oluşur. 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ı Hayı Dim qty Kapalıysa Option Strict (varsayılan), değişkeni olarak Nothingayarlanır.

Açıksa Option Strict , derleme zamanı hatası oluşur.
Hayı 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.
Evet Hayı 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.
Evet Evet 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ı, Proje Tasarımcısı (Visual Basic) üzerindeki Option 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

Uyarı

Bilgisayarınız, aşağıdaki yönergelerde bazı Visual Studio kullanıcı arabirimi öğeleri 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 Gezginipenceresinde 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

Deyim yerine Option StrictDerleme Sayfası, Proje Tasarımcısı (Visual Basic) kullandığınızda, hata oluşturan koşullar üzerinde ek denetime sahip olursunuz. Derleme SayfasınınUyarı 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 ; nesnenin varsayıldığı

Seçenek Katı'daolarak ayarladığınızda, bu uyarı yapılandırma ayarlarının üçü de hata olarak ayarlanır. Seçenek Katı kapalı olarak ayarladığınızda, üç ayar da hiçbiri olarak ayarlanır.

Her uyarı yapılandırma ayarını Tek tek Hiçbiri , Uyarıolarakveya Hata olarak değiştirebilirsiniz. Üç uyarı yapılandırma ayarı da Hataolarak ayarlanırsa On kutusunda Option strict görüntülenir. Üçü de Hiçbiri olarak ayarlanırsa, bu kutuda Off görüntülenir. 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çenekleri iletişim kutusunda Projeler ve Çözümler genişletin ve ardından VB Varsayılanları öğesine 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ında 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 ö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 bakınız