Option Strict StatementOption Strict Statement

Limita le conversioni di tipo di dati implicite per solo conversioni di ampliamento, non consente l'associazione tardiva e la tipizzazione implicita che comporta un Object tipo.Restricts implicit data type conversions to only widening conversions, disallows late binding, and disallows implicit typing that results in an Object type.

SintassiSyntax

Option Strict { On | Off }  

PartiParts

TermineTerm DefinizioneDefinition
On Facoltativo.Optional. Abilita Option Strict controllo.Enables Option Strict checking.
Off Facoltativo.Optional. Disabilita Option Strict controllo.Disables Option Strict checking.

NoteRemarks

Quando Option Strict On o Option Strict viene visualizzato in un file, le condizioni seguenti causano un errore in fase di compilazione:When Option Strict On or Option Strict appears in a file, the following conditions cause a compile-time error:

  • Conversioni implicite verso un tipo di dati più piccoloImplicit narrowing conversions

  • Associazione tardivaLate binding

  • Tipizzazione implicita che comporta un tipo ObjectImplicit typing that results in an Object type

Nota

Nelle configurazioni di avviso che è possibile impostare per il pagina compilazione, creazione progetti (Visual Basic), sono disponibili tre impostazioni che corrispondono alle tre condizioni che causano un errore in fase di compilazione.In the warning configurations that you can set on the Compile Page, Project Designer (Visual Basic), there are three settings that correspond to the three conditions that cause a compile-time error. Per informazioni su come usare queste impostazioni, vedere per impostare le configurazioni di avviso nell'IDE più avanti in questo argomento.For information about how to use these settings, see To set warning configurations in the IDE later in this topic.

Il Option Strict Off istruzione disattiva l'errore e avviso di controllo per tutte e tre le condizioni, anche se le impostazioni IDE associate specificano per attivare questi errori o avvisi.The Option Strict Off statement turns off error and warning checking for all three conditions, even if the associated IDE settings specify to turn on these errors or warnings. Il Option Strict On istruzione attiva errore e avviso di controllo per tutte e tre le condizioni, anche se le impostazioni IDE associate specificano per disattivare questi errori o avvisi.The Option Strict On statement turns on error and warning checking for all three conditions, even if the associated IDE settings specify to turn off these errors or warnings.

Se usato, il Option Strict istruzione deve precedere qualsiasi altra istruzione di codice in un file.If used, the Option Strict statement must appear before any other code statements in a file.

Quando si imposta Option Strict a On, Visual Basic controlla i tipi di dati sono specificati per tutti gli elementi di programmazione.When you set Option Strict to On, Visual Basic checks that data types are specified for all programming elements. Tipi di dati possono essere specificati in modo esplicito o specificati tramite l'inferenza del tipo locale.Data types can be specified explicitly, or specified by using local type inference. Specifica dei tipi di dati per tutti gli elementi di programmazione è consigliata, per i motivi seguenti:Specifying data types for all your programming elements is recommended, for the following reasons:

  • Consente il supporto IntelliSense per le variabili e parametri.It enables IntelliSense support for your variables and parameters. In questo modo è possibile visualizzare le relative proprietà e gli altri membri durante la digitazione di codice.This enables you to see their properties and other members as you type code.

  • Consente al compilatore di eseguire il controllo dei tipi.It enables the compiler to perform type checking. Controllo consente di che trovare le istruzioni che possono non riuscire in fase di esecuzione a causa di errori di conversione del tipo.Type checking helps you find statements that can fail at run time because of type conversion errors. Identifica anche le chiamate ai metodi su oggetti che non supportano tali metodi.It also identifies calls to methods on objects that do not support those methods.

  • Accelera l'esecuzione di codice.It speeds up the execution of code. Uno dei motivi è che se non si specifica un tipo di dati per un elemento di programmazione, il compilatore Visual Basic assegna il Object tipo.One reason for this is that if you do not specify a data type for a programming element, the Visual Basic compiler assigns it the Object type. Il codice compilato potrebbe essere necessario convertire spostarsi tra Object e altri tipi di dati, riducendo le prestazioni.Compiled code might have to convert back and forth between Object and other data types, which reduces performance.

Errori di conversione di Narrowing impliciteImplicit Narrowing Conversion Errors

Questi errori si verificano in presenza di una conversione implicita verso un tipo di dati più piccolo.Implicit narrowing conversion errors occur when there is an implicit data type conversion that is a narrowing conversion.

Visual Basic è possibile convertire altri tipi di dati di molti tipi di dati.Visual Basic can convert many data types to other data types. Quando il valore di un tipo di dati viene convertito in un tipo di dati con precisione inferiore o con una capacità inferiore, può verificarsi una perdita di dati.Data loss can occur when the value of one data type is converted to a data type that has less precision or a smaller capacity. Se tale conversione non riesce, si verifica un errore di run-time.A run-time error occurs if such a narrowing conversion fails. Option Strict garantisce la notifica in fase di compilazione di queste conversioni di narrowing in modo che possano essere evitate.Option Strict ensures compile-time notification of these narrowing conversions so that you can avoid them. Per altre informazioni, vedere conversioni implicite ed esplicite e Widening and Narrowing Conversions.For more information, see Implicit and Explicit Conversions and Widening and Narrowing Conversions.

Le conversioni che possono causare errori includono le conversioni implicite che si verificano nelle espressioni.Conversions that can cause errors include implicit conversions that occur in expressions. Per altre informazioni, vedere i seguenti argomenti:For more information, see the following topics:

Quando si concatenano le stringhe usando il & operatore, tutte le conversioni per le stringhe vengono considerate di ampliamento.When you concatenate strings by using the & Operator, all conversions to the strings are considered to be widening. In modo che queste conversioni non generano un errore di conversione narrowing implicite, anche se Option Strict si trova in.So these conversions do not generate an implicit narrowing conversion error, even if Option Strict is on.

Quando si chiama un metodo con un argomento che dispone di un tipo di dati diverso rispetto al parametro corrispondente, una conversione di narrowing provoca un errore in fase di compilazione se Option Strict si trova in.When you call a method that has an argument that has a data type different from the corresponding parameter, a narrowing conversion causes a compile-time error if Option Strict is on. È possibile evitare l'errore in fase di compilazione tramite una conversione verso o una conversione esplicita.You can avoid the compile-time error by using a widening conversion or an explicit conversion.

Errori di conversione di narrowing implicite vengono soppressi in fase di compilazione per le conversioni dagli elementi in un For Each…Next insieme alla variabile di controllo del ciclo.Implicit narrowing conversion errors are suppressed at compile-time for conversions from the elements in a For Each…Next collection to the loop control variable. Questo errore si verifica anche se Option Strict si trova in.This occurs even if Option Strict is on. Per altre informazioni, vedere la sezione "Conversioni di Narrowing" For Each... Istruzione Next.For more information, see the "Narrowing Conversions" section in For Each...Next Statement.

Errori di associazione tardivaLate Binding Errors

Un oggetto è ad associazione tardiva quando viene assegnato a una proprietà o a un metodo di una variabile dichiarata di tipo Object.An object is late bound when it is assigned to a property or method of a variable that is declared to be of type Object. Per altre informazioni, vedere associazione anticipata e tardiva.For more information, see Early and Late Binding.

Errori di tipo di oggetto implicitoImplicit Object Type Errors

Si verificano errori di tipo di oggetto implicito quando non è possibile dedurre un tipo appropriato per una variabile dichiarata, pertanto viene dedotto il tipo Object.Implicit object type errors occur when an appropriate type cannot be inferred for a declared variable, so a type of Object is inferred. Questo errore si verifica principalmente quando si usa un'istruzione Dim per dichiarare una variabile senza usare una clausola As e Option Infer è Off.This primarily occurs when you use a Dim statement to declare a variable without using an As clause, and Option Infer is off. Per altre informazioni, vedere Option Infer Statement e il specifiche del linguaggio Visual Basic.For more information, see Option Infer Statement and the Visual Basic Language Specification.

Per i parametri di metodo, il As clausola è facoltativa se Option Strict è disattivata.For method parameters, the As clause is optional if Option Strict is off. Tuttavia, se un parametro viene utilizzato un As clausola, tutti devono usare lo.However, if any one parameter uses an As clause, they all must use it. Se Option Strict è on, il As clausola è obbligatoria per ogni definizione di parametro.If Option Strict is on, the As clause is required for every parameter definition.

Se si dichiara una variabile senza usare un As clausola e impostarla su Nothing, la variabile è di tipo Object.If you declare a variable without using an As clause and set it to Nothing, the variable has a type of Object. In questo caso verrà generato alcun errore in fase di compilazione quando Option Strict si trova in e Option Infer si trova in.No compile-time error occurs in this case when Option Strict is on and Option Infer is on. Un esempio di ciò è Dim something = Nothing.An example of this is Dim something = Nothing.

Tipi di dati e valori predefinitiDefault Data Types and Values

Nella tabella seguente vengono descritti i risultati di varie combinazioni della specifica del tipo di dati e l'inizializzatore in un' istruzione Dim.The following table describes the results of various combinations of specifying the data type and initializer in a Dim Statement.

Tipo di dati specificato?Data type specified? Inizializzatore specificato?Initializer specified? EsempioExample RisultatoResult
NoNo NoNo Dim qty Se Option Strict è disabilitato (impostazione predefinita), la variabile è impostata su Nothing.If Option Strict is off (the default), the variable is set to Nothing.

Se Option Strict è abilitato, si verifica un errore in fase di compilazione.If Option Strict is on, a compile-time error occurs.
NoNo YesYes Dim qty = 5 Se Option Infer è abilitato (impostazione predefinita), alla variabile viene assegnato il tipo di dati dell'inizializzatore.If Option Infer is on (the default), the variable takes the data type of the initializer. Visualizzare inferenza del tipo locale.See Local Type Inference.

Se le istruzioni Option Infer e Option Strict sono disabilitate, il tipo di dati accettato dalla variabile è Object.If Option Infer is off and Option Strict is off, the variable takes the data type of Object.

Se Option Infer è disabilitato e Option Strict è abilitato, si verifica un errore in fase di compilazione.If Option Infer is off and Option Strict is on, a compile-time error occurs.
YesYes NoNo Dim qty As Integer La variabile viene inizializzata sul valore predefinito per il tipo di dati.The variable is initialized to the default value for the data type. Per altre informazioni, vedere istruzione Dim.For more information, see Dim Statement.
YesYes YesYes Dim qty As Integer = 5 Se il tipo di dati dell'inizializzatore non è convertibile nel tipo di dati specificato, si verifica un errore in fase di compilazione.If the data type of the initializer is not convertible to the specified data type, a compile-time error occurs.

Quando non è presente un'istruzione Option StrictWhen an Option Strict Statement Is Not Present

Se il codice sorgente non contiene un Option Strict istruzione, il Option strict impostazione il pagina compilazione, creazione progetti (Visual Basic) viene usato.If the source code does not contain an Option Strict statement, the Option strict setting on the Compile Page, Project Designer (Visual Basic) is used. Il pagina compilazione dispone di impostazioni che consentono un maggiore controllo delle condizioni che generano un errore.The Compile Page has settings that provide additional control over the conditions that generate an error.

Se si usa il compilatore della riga di comando, è possibile usare la /optionstrict opzione del compilatore per specificare un'impostazione per Option Strict.If you are using the command-line compiler, you can use the /optionstrict compiler option to specify a setting for Option Strict.

Per impostare Option Strict nell'IDETo set Option Strict in the IDE

Nota

Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi.The Visual Studio edition that you have and the settings that you use determine these elements. Per altre informazioni, vedere Personalizzazione dell'IDE.For more information, see Personalizing the IDE.

  1. Selezionare un progetto in Esplora soluzioni.In Solution Explorer, select a project. Scegliere Proprietà dal menu Progetto.On the Project menu, click Properties.

  2. Nel Compile scheda, impostare il valore Option Strict casella.On the Compile tab, set the value in the Option Strict box.

Per impostare le configurazioni di avviso nell'IDETo set warning configurations in the IDE

Quando si usa la pagina compilazione, creazione progetti (Visual Basic) anziché un Option Strict istruzione, si ha un maggiore controllo delle condizioni che generano errori.When you use the Compile Page, Project Designer (Visual Basic) instead of an Option Strict statement, you have additional control over the conditions that generate errors. Il configurazioni avvisi sezione il pagina compilazione dispone di impostazioni che corrispondono alle tre condizioni che causano un errore in fase di compilazione quando Option Strict si trova in.The Warning configurations section of the Compile Page has settings that correspond to the three conditions that cause a compile-time error when Option Strict is on. Queste impostazioni sono le seguenti:Following are these settings:

  • Conversione implicitaImplicit conversion

  • Binding tardivo. La chiamata potrebbe non riuscire in fase di esecuzione.Late binding; call could fail at run time

  • Tipo implicito. Verrà utilizzato oggetto.Implicit type; object assumed

Quando si imposta Option Strict su On, tutte e tre queste impostazioni di configurazione degli avvisi vengono impostate su Errore.When you set Option Strict to On, all three of these warning configuration settings are set to Error. Quando si imposta Option Strict su Off, tutte e tre le impostazioni vengono impostate su Nessuno.When you set Option Strict to Off, all three settings are set to None.

È possibile modificare singolarmente ogni impostazione di configurazione degli avvisi su Nessuno, Avviso o Errore.You can individually change each warning configuration setting to None, Warning, or Error. Se tutte e tre le impostazioni di configurazione degli avvisi vengono impostate su Errore, nella casella Option strict viene visualizzato On.If all three warning configuration settings are set to Error, On appears in the Option strict box. Se tutte e tre sono impostate su Nessuno, nella casella viene visualizzato Off.If all three are set to None, Off appears in this box. Per qualsiasi altra combinazione di queste impostazioni, viene visualizzato (personalizzato).For any other combination of these settings, (custom) appears.

Per impostare l'impostazione predefinita Option Strict per i nuovi progettiTo set the Option Strict default setting for new projects

Quando si crea un progetto, il Option Strict impostazione nel compilare scheda è impostata sul Option Strict impostazione nel opzioni finestra di dialogo.When you create a project, the Option Strict setting on the Compile tab is set to the Option Strict setting in the Options dialog box.

Per impostare Option Strict nella finestra di dialogo, nel Tools menu, fare clic su opzioni.To set Option Strict in this dialog box, on the Tools menu, click Options. Nella finestra di dialogo Opzioni espandere Progetti e soluzioni, quindi fare clic su Impostazioni predefinite di Visual Basic.In the Options dialog box, expand Projects and Solutions, and then click VB Defaults. L'impostazione predefinita iniziale in le impostazioni predefinite di Visual Basic è Off.The initial default setting in VB Defaults is Off.

Per impostare Option Strict nella riga di comandoTo set Option Strict on the command line

Includere il /optionstrict opzione del compilatore nella vbc comando.Include the /optionstrict compiler option in the vbc command.

EsempioExample

Gli esempi seguenti illustrano gli errori in fase di compilazione causati da conversioni implicite che vengono delle conversioni narrowing.The following examples demonstrate compile-time errors caused by implicit type conversions that are narrowing conversions. Questa categoria di errori corrisponde alla conversione implicita condizione il pagina compilazione.This category of errors corresponds to the Implicit conversion condition on the Compile Page.

' 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

EsempioExample

Nell'esempio seguente illustra un errore in fase di compilazione causato dall'associazione tardiva.The following example demonstrates a compile-time error caused by late binding. Questa categoria di errori corrisponde alla Late binding; chiamata potrebbe non riuscire in fase di esecuzione condizione il pagina compilazione.This category of errors corresponds to the Late binding; call could fail at run time condition on the Compile Page.

' 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

EsempioExample

Gli esempi seguenti illustrano gli errori causati da variabili dichiarate con un tipo implicito di Object.The following examples demonstrate errors caused by variables that are declared with an implicit type of Object. Questa categoria di errori corrisponde alla tipo implicito: presunto oggetto condizione il pagina compilazione.This category of errors corresponds to the Implicit type; object assumed condition on the Compile Page.

' 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

Vedere ancheSee also