Udostępnij za pośrednictwem


Opcja ścisłego instrukcji

Ogranicza konwersje niejawne typ danych do poszerzenia tylko konwersji, nie zezwala na późnym wiązaniem i nie zezwala na niejawny wpisywanie, które spowodowało, że Object typu.

Option Strict { On | Off }

Części

Termin

Definicja

On

Opcjonalne.Umożliwia Option Strict kontroli.

Off

Opcjonalne.Wyłącza Option Strict kontroli.

Uwagi

Gdy Option Strict On lub Option Strict pojawia się w pliku, powodują następujące warunki kompilować-błąd czasu:

  • Konwersje niejawne zawężającej

  • Późne wiązanie

  • Niejawne wpisywanie, które spowodowało, że Object typu

[!UWAGA]

W konfiguracjach ostrzeżenie , które można ustawić na Skompiluj strony, Project Designer (Visual Basic), dostępne są trzy ustawienia, które odpowiadają trzy warunki, które powodują kompilować-błąd czasu.Aby uzyskać informacje dotyczące sposobu korzystania z tych ustawień, zobacz To set warning configurations in the IDE później w tym temacie.

Option Strict Off wyciąg wyłącza błąd i ostrzeżenie sprawdzania wszystkich trzech warunków, nawet jeśli określić skojarzone ustawienia IDE, aby włączyć te błędy lub ostrzeżenia. Option Strict On wyciąg włącza błąd i ostrzeżenie sprawdzania wszystkich trzech warunków, nawet jeśli określić skojarzone ustawienia IDE, aby wyłączyć te błędy lub ostrzeżenia.

Jeśli jest używany, Option Strict wyciąg musi pojawić się przed innymi instrukcje kodu w pliku.

Podczas ustawiania Option Strict do On, Visual Basic sprawdza, że określone typy danych dla wszystkich elementów programowania.Typy danych można jawnie określony lub określone przy użyciu wnioskowanie o typie lokalnym.Określanie typów danych dla wszystkich elementów programowania jest to zalecane, z następujących powodów:

  • Umożliwia obsługę technologii IntelliSense dla zmiennych i parametrów.Dzięki temu można zobaczyć ich właściwości i innych członków podczas pisania kodu.

  • Umożliwia on kompilator do kontrola typów.Sprawdzanie typu pomaga znaleźć instrukcje, które może się nie powieść w czasie wykonywania ze względu na błędy konwersji typu.Identyfikowane są też wywołania metod obiektów, które nie obsługują tych metod.

  • To przyspiesza wykonywanie kodu.Jednym z powodów jest, że jeśli nie określisz typ danych dla elementu programowania Visual Basickompilator przypisuje mu Object typu. Skompilowany kod może być konieczne konwertować i z powrotem między Object i inne typy danych, które obniża wydajność.

Niejawne błędy konwersji zawężającej

Niejawne błędy konwersji zawężającej wystąpić, jeśli Konwersja niejawna typ danych , czyli konwersji zawężającej.

Visual Basicmożna konwertować wiele typów danych na inne typy danych.Może dojść do utraty danych podczas konwersji typ danych , który ma mniej precyzji lub mniejsze możliwości wartość jednego typ danych .błąd czasu wykonania występuje, jeśli takie konwersji zawężającej nie powiedzie się.Option Strictzapewnia kompilować-czas powiadomienia tych zawężanie konwersji, tak aby można ich uniknąć.Aby uzyskać więcej informacji, zobacz Konwersje niejawne i jawne (Visual Basic) i Rozszerzanie i zawężanie konwersji (Visual Basic).

Konwersje, które może spowodować błędy obejmują konwersje niejawne, które występują w wyrażeniach.Aby uzyskać więcej informacji zobacz następujące tematy:

Kiedy można łączyć ciągi znaków za pomocą & Operator (Visual Basic), wszystkich konwersji na ciągi znaków są uważane za rozszerzającej się.Aby konwersje te nie generują niejawny błąd konwersji zawężającej, nawet jeśli Option Strict znajduje się na.

Po wywołaniu metoda , zawierającego argument , że ma typ danych inny niż odpowiedni parametr, powoduje konwersji zawężającej kompilować-czas błąd, jeśli Option Strict znajduje się na.Można uniknąć kompilować-czas błąd przy użyciu konwersji poszerzanie lub konwersja jawna.

Niejawne błędy konwersji zawężającej są pomijane przy kompilować-czas dla konwersji z elementów w For Each…Next kolekcji do pętli sterowania zmienna.Dzieje się tak nawet wtedy, gdy Option Strict znajduje się na.Aby uzyskać więcej informacji, zobacz sekcję "Zawężanie konwersje" w Dla każdego...Następna instrukcja (Visual Basic).

Późnym wiązaniem błędów

obiekt jest późnym wiązaniem przypisywany do właściwość lub metoda został zadeklarowany jako typu zmienna Object.Aby uzyskać więcej informacji, zobacz Wczesnego i późnego wiązania (Visual Basic).

Niejawne błędów typu obiektu

Niejawne obiekt typu błędy występują, gdy odpowiedni typ nie może być wywnioskowane dla deklarowana zmiennatego typu Object się ich doszukiwać.To występuje głównie podczas korzystania z Dim wyciąg zadeklarować zmienna bez korzystania z As klauzuli, oraz Option Infer jest wyłączona. Aby uzyskać więcej informacji, zobacz Opcja wywnioskować instrukcji i Specyfikacja języka Visual Basic.

Parametry metoda As klauzuli jest opcjonalny Jeśli Option Strict jest wyłączona.Jednakże jeśli używa jakichkolwiek jeden parametr As klauzuli, wszystkie one należy z niej korzystać.Jeśli Option Strict , As klauzuli jest wymagany dla każdej definicji parametr .

Jeśli można zadeklarować zmienna bez korzystania z As klauzuli i ustawić ją na Nothing, zmienna ma określony typ Object.Nie kompilować-w tym przypadku wystąpi błąd czasu po Option Strict znajduje się na i Option Infer znajduje się na.Przykładem tego jest Dim something = Nothing.

zcd4xwzs.collapse_all(pl-pl,VS.110).gifDane domyślne typy i wartości

W poniższej tabeli opisano wyniki różnych kombinacji określenie typ danych i inicjatora w Dim instrukcji (Visual Basic).

Określony typ danych?

Inicjator określone?

Przykład

Wynik

Nr

Nr

Dim qty

Jeśli Option Strict jest wyłączone (domyślnie), zmienna jest ustawiana Nothing.

Jeśli Option Strict znajduje się na kompilować-wystąpi błąd czasu.

Nr

Tak

Dim qty = 5

Jeśli Option Infer jest na (domyślnie), zmienna ma inicjatora typ danych .See Wnioskowanie typu lokalnego (Visual Basic).

Jeśli Option Infer jest wyłączona i Option Strict jest wyłączony, zmienna ma typ danych Object.

Jeśli Option Infer jest wyłączona i Option Strict znajduje się na kompilować-wystąpi błąd czasu.

Tak

Nr

Dim qty As Integer

zmienna jest zainicjowana wartość domyślna dla typ danych.Aby uzyskać więcej informacji, zobacz Dim instrukcji (Visual Basic).

Tak

Tak

Dim qty As Integer = 5

Jeśli typ danych inicjatora nie jest w wymienialnej do określonego typ danych, kompilować-wystąpi błąd czasu.

Kiedy opcja ścisłego instrukcji nie jest obecny

Jeśli nie zawiera kodu źródłowego Option Strict wyciąg opcji ścisłegoustawienie na Skompiluj strony, Project Designer (Visual Basic) jest używana. Stronę skompilować zawiera ustawienia, które zapewniają dodatkową kontrolę nad warunków, które generują błąd.

Jeśli używasz kompilatorwiersza polecenia można użyć /optionstrictopcję kompilator , aby określić ustawienie dla Option Strict.

zcd4xwzs.collapse_all(pl-pl,VS.110).gifAby ustawić opcję ścisłe w IDE

[!UWAGA]

Na danym komputerze mogą być używane inne nazwy lub lokalizacje pewnych elementów interfejsu użytkownika programu Visual Studio, które są używane w poniższych instrukcjach. Używana wersja programu Visual Studio oraz jej ustawienia określają te elementy. Aby uzyskać więcej informacji, zobacz Visual Studio, ustawienia.

  1. W Solution Explorer, wybierz projekt.Na Projekt menu, kliknij przycisk Właściwości. Aby uzyskać więcej informacji, zobacz Wprowadzenie do projektanta projektu.

  2. Na skompilować kartę, należy ustawić wartość w Opcji ścisłego pole.

zcd4xwzs.collapse_all(pl-pl,VS.110).gifAby ustawić konfiguracje ostrzeżenie w IDE

Kiedy używać Skompiluj strony, Project Designer (Visual Basic) zamiast Option Strict wyciągmają dodatkową kontrolę nad warunków, które generują błędy. Ostrzeżenie konfiguracji sekcji Kompilować strony zawiera ustawienia, które odpowiadają trzy warunki, które powodują kompilować-czas błąd podczas Option Strict znajduje się na.Poniżej przedstawiono te ustawienia:

  • Niejawna konwersja

  • Późne wiązanie; połączenie może nie działać w czasie wykonywania

  • Typ niejawne; obiekt zakłada, że

Podczas ustawiania Opcji ścisłego do na, wszystkie trzy z tych ustawieńkonfiguracja ostrzeżeniesą ustawione na Błąd. Podczas ustawiania Opcji ścisłego do poza, wszystkie trzy ustawienia są ustawione na Brak.

Można zmienić indywidualnie każde ostrzeżeniekonfiguracjaustawienie do Brak, Ostrzeżenie, lub Błąd. Jeśli wszystkie trzy ustawieniakonfiguracja ostrzeżeniesą ustawione na Błąd, On pojawia się w Option strict pole. Jeśli wszystkie trzy są ustawione na Brak, Off pojawia się w tym polu.Dla innych kombinacji tych ustawień (niestandardowych) jest wyświetlany.

zcd4xwzs.collapse_all(pl-pl,VS.110).gifAby ustawić opcję ścisłe domyślne ustawienie dla nowych projektów

Podczas utworzyć projekt Opcji ścisłego ustawienie na skompilować karta jest ustawiona na Opcji ścisłego ustawienie w Opcjeokno dialogowe.

Aby ustawić Option Strict w tym okno dialogowena Narzędziamenu, kliknij przycisk Opcje. W Opcje okno dialogowerozwiń projektów i rozwiązań, a następnie kliknij przycisk Domyślne VB. Początkowe domyślne ustawienie w Domyślne VB jest Off.

zcd4xwzs.collapse_all(pl-pl,VS.110).gifAby ustawić opcję ścisłe wiersz polecenia

Zawiera /optionstrictopcję kompilator w vbc polecenia.

Przykład

W poniższych przykładach pokazano kompilować-czas błędów spowodowanych niejawne konwersje typów, które są zawężanie konwersji.Ta kategoria błędów odpowiada niejawna konwersja warunek na Kompilować strony.

' 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

W poniższym przykładzie zademonstrowano kompilować-czas błąd spowodowany późnym wiązaniem.Ta kategoria błędów odpowiada późnego wiązania; połączenie może nie działać w czasie wykonywania warunkiem na Skompilować stronę.

' 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

W poniższych przykładach pokazano błędy spowodowane przez zmienne zadeklarowane za pomocą niejawny typu Object.Ta kategoria błędów odpowiada typu niejawne; obiekt zakłada, że warunkiem na Skompilować stronę.

' 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

Zobacz też

Zadania

Jak: dostęp członkowie obiektu (Visual Basic)

Informacje

Skompiluj strony, Project Designer (Visual Basic)

Opcja wyraźne stwierdzenie (Visual Basic)

Funkcje konwersji typu (Visual Basic)

/optionstrict

Okno dialogowe Opcje domyślne, projekty, Visual Basic

Koncepcje

Rozszerzanie i zawężanie konwersji (Visual Basic)

Konwersje niejawne i jawne (Visual Basic)

Osadzone wyrażenia w języku XML (Visual Basic)

Konwersja obiektu delegowanego obniżone (Visual Basic)

Późne wiązanie w rozwiązania dla pakietu Office