Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ogranicza niejawne konwersje typów danych tylko do rozszerzania konwersji, nie zezwala na późne powiązanie i nie zezwala na niejawne wpisywanie, które powoduje Object typ.
Składnia
Option Strict { On | Off }
Części
| Termin | Definicja |
|---|---|
On |
Opcjonalny. Włącza Option Strict sprawdzanie. |
Off |
Opcjonalny. Wyłącza Option Strict sprawdzanie. |
Uwagi
Gdy Option Strict On plik lub Option Strict pojawi się w pliku, następujące warunki powodują błąd czasu kompilacji:
Niejawne konwersje zawężające
Opóźnione powiązanie
Niejawne wpisywanie, które powoduje
Objecttyp
Uwaga / Notatka
W konfiguracjach ostrzegawczych, które można ustawić na stronie kompilowania, Project Designer (Visual Basic), istnieją trzy ustawienia, które odpowiadają trzem warunkom, które powodują błąd czasu kompilacji. Aby uzyskać informacje o sposobie korzystania z tych ustawień, zobacz Aby ustawić konfiguracje ostrzeżeń w środowisku IDE w dalszej części tego tematu.
Instrukcja Option Strict Off wyłącza sprawdzanie błędów i ostrzeżeń dla wszystkich trzech warunków, nawet jeśli skojarzone ustawienia środowiska IDE określają, aby włączyć te błędy lub ostrzeżenia. Instrukcja Option Strict On włącza sprawdzanie błędów i ostrzeżeń dla wszystkich trzech warunków, nawet jeśli skojarzone ustawienia środowiska IDE określają, aby wyłączyć te błędy lub ostrzeżenia.
W przypadku użycia instrukcja musi być wyświetlana Option Strict przed wszelkimi innymi instrukcjami kodu w pliku.
Po ustawieniu wartości Option StrictOnprogram Visual Basic sprawdza, czy typy danych są określone dla wszystkich elementów programowania. Typy danych można określić jawnie lub określić przy użyciu wnioskowania typu lokalnego. Zalecane jest określenie typów danych dla wszystkich elementów programowania z następujących powodów:
Umożliwia wsparcie IntelliSense dla zmiennych i parametrów. Dzięki temu można wyświetlać ich właściwości i inne elementy członkowskie podczas wpisywania kodu.
Umożliwia kompilatorowi przeprowadzanie sprawdzania typów. Sprawdzanie typów pomaga znaleźć instrukcje, które mogą zakończyć się niepowodzeniem w czasie wykonywania z powodu błędów konwersji typów. Identyfikuje również wywołania metod dla obiektów, które nie obsługują tych metod.
Przyspiesza wykonywanie kodu. Jednym z powodów jest to, że jeśli nie określisz typu danych dla elementu programowania, kompilator języka Visual Basic przypisuje mu
Objecttyp. Skompilowany kod może być musiał przekonwertować między i innymi typamiObjectdanych, co zmniejsza wydajność.
Niejawne błędy konwersji zawężania
Niejawne błędy konwersji zawężania występują, gdy istnieje niejawna konwersja typu danych, która jest konwersją zawężającą.
Język Visual Basic może konwertować wiele typów danych na inne typy danych. Utrata danych może wystąpić, gdy wartość jednego typu danych jest konwertowana na typ danych o mniejszej precyzji lub mniejszej pojemności. Błąd czasu wykonywania występuje, jeśli taka konwersja zawężania nie powiedzie się.
Option Strict zapewnia powiadomienie o czasie kompilacji tych konwersji zawężających, dzięki czemu można ich uniknąć. Aby uzyskać więcej informacji, zobacz Niejawne i jawne konwersje oraz Konwersje rozszerzania i zawężania.
Konwersje, które mogą powodować błędy, obejmują niejawne konwersje występujące w wyrażeniach. Aby uzyskać więcej informacji, zobacz następujące tematy:
Podczas łączenia ciągów przy użyciu operatora i wszystkie konwersje na ciągi są uważane za rozszerzające. Dlatego te konwersje nie generują niejawnego błędu konwersji zawężania, nawet jeśli Option Strict jest włączona.
W przypadku wywołania metody, która ma argument o typie danych innym niż odpowiedni parametr, konwersja zawężania powoduje błąd czasu kompilacji, jeśli Option Strict jest włączony. Można uniknąć błędu czasu kompilacji przy użyciu konwersji rozszerzającej lub jawnej konwersji.
Niejawne błędy konwersji zawężania są pomijane w czasie kompilacji dla konwersji z elementów w For Each…Next kolekcji do zmiennej sterującej pętli. Dzieje się tak nawet wtedy, gdy Option Strict jest włączona. Aby uzyskać więcej informacji, zobacz sekcję "Zawężanie konwersji" w temacie Dla każdego... Następna instrukcja.
Błędy opóźnionia powiązania
Obiekt jest opóźniony, gdy jest przypisany do właściwości lub metody zmiennej, która jest zadeklarowana jako typu Object. Aby uzyskać więcej informacji, zobacz Wczesne i późne powiązanie.
Niejawne błędy typu obiektu
Niejawne błędy typu obiektu występują, gdy nie można wywnioskować odpowiedniego Object typu dla zadeklarowanej zmiennej, więc typ jest wnioskowany. Dzieje się tak przede wszystkim, gdy używasz Dim instrukcji do deklarowania zmiennej bez używania As klauzuli i Option Infer jest wyłączona. Aby uzyskać więcej informacji, zobacz Option Infer Statement (Instrukcja wnioskowania opcji) i Visual Basic Language Specification (Specyfikacja języka Visual Basic).
W przypadku parametrów metody klauzula jest opcjonalna As , jeśli Option Strict jest wyłączona. Jeśli jednak jeden parametr używa klauzuli As , wszystkie muszą go używać. Jeśli Option Strict jest włączona, klauzula jest wymagana As dla każdej definicji parametru.
Jeśli zadeklarowasz zmienną bez użycia klauzuli As i ustawisz ją na Nothing, zmienna ma typ Object. W takim przypadku nie występuje błąd czasu kompilacji, gdy Option Strict jest włączony i Option Infer włączony. Przykładem tego jest Dim something = Nothing.
Domyślne typy danych i wartości
W poniższej tabeli opisano wyniki różnych kombinacji określania typu danych i inicjatora w instrukcji Dim.
| Określony typ danych? | Określony inicjator? | Przykład | Wynik |
|---|---|---|---|
| Nie. | Nie. | Dim qty |
Jeśli Option Strict wartość jest wyłączona (wartość domyślna), zmienna jest ustawiona na Nothingwartość .W przypadku Option Strict włączenia wystąpi błąd czasu kompilacji. |
| Nie. | Tak | Dim qty = 5 |
Jeśli Option Infer parametr jest włączony (wartość domyślna), zmienna przyjmuje typ danych inicjatora. Zobacz Wnioskowanie typu lokalnego.Jeśli Option Infer wartość jest wyłączona i Option Strict wyłączona, zmienna pobiera typ Objectdanych .Jeśli Option Infer jest wyłączona i Option Strict jest włączona, wystąpi błąd czasu kompilacji. |
| Tak | Nie. | Dim qty As Integer |
Zmienna jest inicjowana do wartości domyślnej dla typu danych. Aby uzyskać więcej informacji, zobacz Dim, instrukcja. |
| Tak | Tak | Dim qty As Integer = 5 |
Jeśli typ danych inicjatora nie jest konwertowany na określony typ danych, wystąpi błąd czasu kompilacji. |
Gdy instrukcja strict opcji nie jest obecna
Jeśli kod źródłowy nie zawiera Option Strict instrukcji, jest używane ustawienie Opcji ścisłe na stronie kompilacji, projektant projektu (Visual Basic).
Strona kompilowania zawiera ustawienia, które zapewniają dodatkową kontrolę nad warunkami, które generują błąd.
Jeśli używasz kompilatora wiersza polecenia, możesz użyć opcji -optionstrict kompilatora, aby określić ustawienie dla Option Strictelementu .
Aby ustawić opcję Ścisła w środowisku IDE
Uwaga / Notatka
Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w poniższych instrukcjach. Wersja programu Visual Studio i ustawienia, których używasz, określają te elementy. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.
W eksploratorze rozwiązań wybierz projekt. W menu Projekt kliknij Właściwości.
Na karcie Kompilowanie ustaw wartość w polu Opcja Ścisła .
Aby ustawić konfiguracje ostrzegawcze w środowisku IDE
Jeśli używasz strony kompilowania, Projektant projektu (Visual Basic) zamiast instrukcji Option Strict , masz dodatkową kontrolę nad warunkami, które generują błędy. Sekcja Konfiguracja ostrzeżeńna stronie kompilacji zawiera ustawienia odpowiadające trzem warunkom, które powodują błąd czasu kompilacji, gdy Option Strict jest włączony. Poniżej przedstawiono następujące ustawienia:
Niejawna konwersja
Opóźnione powiązanie; wywołanie może zakończyć się niepowodzeniem w czasie wykonywania
Typ niejawny; zakładany obiekt
Po ustawieniu opcji Strict na Wartość Włączone wszystkie trzy z tych ustawień konfiguracji ostrzeżenia są ustawione na Wartość Błąd. Po ustawieniu opcji Strict na Wartość Wyłączone wszystkie trzy ustawienia są ustawione na Wartość Brak.
Każde ustawienie konfiguracji ostrzeżenia można zmienić indywidualnie na Brak, Ostrzeżenie lub Błąd. Jeśli wszystkie trzy ustawienia konfiguracji ostrzeżenia są ustawione na Błąd, On pojawi się w Option strict polu . Jeśli wszystkie trzy są ustawione na Brak, Off pojawi się w tym polu. W przypadku każdej innej kombinacji tych ustawień pojawi się (niestandardowa).
Aby ustawić ustawienie domyślne Opcji Ścisłe dla nowych projektów
Podczas tworzenia projektu ustawienie Opcja Ścisła na karcie Kompilowanie jest ustawione na ustawienie Opcji Ścisłe w oknie dialogowym Opcje.
Aby ustawić Option Strict w tym oknie dialogowym, w menu Narzędzia kliknij pozycję Opcje. W oknie dialogowym Opcje rozwiń węzeł Projekty i rozwiązania, a następnie kliknij pozycję Domyślne VB. Początkowe ustawienie domyślne w ustawieniach domyślnych VB to Off.
Aby ustawić opcję Strict w wierszu polecenia
Dołącz opcję -optionstrict kompilatora w poleceniu vbc .
Przykład 1
W poniższych przykładach pokazano błędy czasu kompilacji spowodowane niejawnymi konwersjami typów, które są konwersjami zawężanymi. Ta kategoria błędów odpowiada warunkowi niejawnej konwersji na stronie kompilacji.
' 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
Przykład 2
W poniższym przykładzie pokazano błąd czasu kompilacji spowodowany późnym powiązaniem. Ta kategoria błędów odpowiada opóźnionemu powiązaniu. Wywołanie może zakończyć się niepowodzeniem w czasie wykonywania na stronie kompilacji.
' 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
Przykład 3
W poniższych przykładach pokazano błędy spowodowane przez zmienne zadeklarowane za pomocą niejawnego typu Object. Ta kategoria błędów odpowiada typowi niejawnemu; obiekt zakładał warunek na stronie kompilacji.
' 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 także
- Rozszerzające i zawężające przekształcenia
- Niejawne i jawne konwersje
- skompilowana strona, projektant projektu (Visual Basic)
- Instrukcja Option Explicit
- Funkcje konwersji typu
- Instrukcje: uzyskiwanie dostępu do elementów członkowskich obiektu
- Wyrażenia osadzone w XML
- Rozluźniona konwersja delegatów
- Późne wiązanie w rozwiązaniach pakietu Office
- -optionstrict
- Ustawienia domyślne, projekty, opcje, okno dialogowe Visual Basic