Instrução Option Strict

Restringe conversões implícitas de tipo de dados para somente conversões de expansão, não permite ligação tardia e não permite a digitação implícita que resulta em um Object tipo.

Option Strict { On | Off }

Partes

Termo

Definição

On

Opcional. Permite verificação Option Strict.

Off

Opcional. Desativa verificação Option Strict.

Comentários

Quando Option Strict On ou Option Strict aparece em um arquivo, as seguintes condições causar um compilar- errode tempo:

  • Restrição de conversões implícitas

  • Ligação tardia

  • Digitação implícita que resulta em um Object tipo

Dica

Nas configurações de aviso que você pode definir a Página de Compilação, Designer de Projeto (Visual Basic), há três configurações que correspondem às três condições que causam um compilar- errode tempo.Para obter informações sobre como usar essas configurações, consulte To set warning configurations in the IDE posteriormente neste tópico.

O Option Strict Off demonstrativo desativa erro e aviso verificando todas as três condições, mesmo se as configurações do IDE associadas especificarem para ativar esses erros ou avisos. O Option Strict On demonstrativo ativa o erro e aviso verificando todas as três condições, mesmo se as configurações do IDE associadas especificarem para desativar esses erros ou avisos.

Se usado, o Option Strict demonstrativo deve aparecer antes de quaisquer outras instruções de código em um arquivo.

Ao definir Option Strict para On, Visual Basic , verifica que os tipos de dados são especificados para todos os elementos de programação. Tipos de dados podem ser especificados explicitamente ou pode ser especificados usando a inferênciade tipo local. Especificar os tipos de dados para todos os seus elementos de programação é recomendado, pelos seguintes motivos:

  • Ele ativa suporte IntelliSense para suas variáveis e parâmetros. Isso permite que você veja suas propriedades e outros membros conforme você digita o código.

  • Ele permite que o compilador realizar verificação de tipo. Verificação de tipo ajuda você a encontrar instruções que podem falhar em tempo de execução por causa de erros de conversão de tipo. Ele também identifica chamadas para métodos em objetos que não oferecem suporte a esses métodos.

  • Ele acelera a execução de código. Uma razão para isso é que se você não especificar um tipo de dados para um elemento de programação, ocompilador de Visual Basicatribui a Object tipo. Código compilado talvez precise converter e para trás entre Object e outros tipos de dados, o que reduz o desempenho.

Erros de conversão de restrição implícita

Erros de conversão de restrição implícita ocorrem quando há uma conversão implícita de tipo de dados que é uma conversão de restrição.

Visual Basicpode converter muitos tipos de dados para outros tipos de dados. Perda de dados pode ocorrer quando o valor de um tipo de dados é convertido em um tipo de dados que tem o menor precisão ou capacidade menor. Um erro de tempo de execução ocorre se tal uma conversão de restrição falhar. Option Strictgarante a compilar-tempo notificação desses restringir conversões para que você pode evitá-los. Para obter mais informações, consulte Conversões implícitas e explícitas (Visual Basic) e Conversões de Widening e Narrowing (Visual Basic).

Conversões que podem causar erros incluem conversões implícitas que ocorrem em expressões. Para obter mais informações, consulte os seguintes tópicos:

Quando você concatenar strings usando o Operador & (Visual Basic), todas as conversões para as seqüências de caracteres são consideradas ser alargamento. Portanto, essas conversões não geram um de conversão de restrição implícita erro, mesmo se Option Strict está ativado.

Quando você chama um método que tem um argumento que tem um tipo de dados diferente do parâmetrocorrespondente, uma conversão de restrição faz com que uma compilar- erro de tempo se Option Strict está ativado. Você pode evitar a compilar- erro de tempo por meio de uma conversação ou uma conversão explícita.

Erros de conversão implícita de restrição são suprimidos em compilar-tempo para conversões de elementos em um For Each…Next variávelde controle de coleção para o loop . Isso ocorre mesmo se Option Strict está ativado. Para obter mais informações, consulte a seção "Estreitando conversões" Instrução For Each...Next (Visual Basic).

Erros de ligação tardia

Um objeto é atrasado limite quando ele é atribuído a uma propriedade ou método de uma variável é declarada como sendo do tipo Object. Para mais informações, consulte Associação antecipada e tardia (Visual Basic).

Erros de tipo de objeto implícito

Erros de tipo implícito objeto ocorrem quando um tipo apropriado não pode ser inferido para uma variáveldeclarada, portanto, um tipo de Object é inferido. Isso ocorre principalmente quando você usa um Dimde demonstrativo para declarar uma variável sem usar um As cláusula, e Option Infer está desativado. Para mais informações, consulte Instrução Option Infer e Especificação da linguagem Visual Basic.

Para os parâmetros de método , o As cláusula é opcional se Option Strict está desativado. No entanto, se qualquer um parâmetro usa um As cláusula, todos eles devem usá-lo. Se Option Strict está ativada, o As cláusula é necessária para cada definição de parâmetro .

Se você declarar uma variável sem usar um As cláusula e defina-o como Nothing, a variável tem um tipo de Object. Sem compilar-em tempo de erro ocorre neste maiúsculas e minúsculas quando Option Strict está ativado e Option Infer está ativado. Um exemplo disso é Dim something = Nothing.

Tipos de dados padrão e valores

A tabela a seguir descreve os resultados de várias combinações de especificar o tipo de dados e o inicializador de um Instrução Dim (Visual Basic).

Tipo de dados especificado?

Inicializador especificado?

Exemplo

Resultado

Não

Não

Dim qty

Se Option Strict está desativado (padrão), a variável é definida como Nothing.

Se Option Strict está ativada, um compilar-tempo de erro ocorre.

Não

Sim

Dim qty = 5

Se Option Infer é ativado (padrão), a variável leva o tipo de dados do inicializador. Consulte Inferência de tipo local (Visual Basic).

Se Option Infer está desativado e Option Strict está desativado, a variável leva o tipo de dados de Object.

Se Option Infer está desativado e Option Strict está ativada, uma compilar-em tempo de erro ocorre.

Sim

Não

Dim qty As Integer

A variável é inicializada com o valor padrão para o tipo de dados. Para mais informações, consulte Instrução Dim (Visual Basic).

Sim

Sim

Dim qty As Integer = 5

Se o tipo de dados do inicializador não é conversível em especificado tipo de dados, uma compilar-em tempo de erro ocorre.

Quando uma opção Strict Statement não está presente

Se o código fonte não contém um Option Strict demonstrativo, o opção strictconfiguração o Página de Compilação, Designer de Projeto (Visual Basic) é usado. O Página Compile possui configurações que fornecem controle adicional sobre as condições que gera um erro.

Se você estiver usando o comando -linhadecompilador, você pode usar o /optionstrictopção de compilador para especificar uma configuração para Option Strict.

Definir Option Strict no IDE.

Dica

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando configurações de desenvolvimento no Visual Studio.

  1. Em Solution Explorer, selecione um projeto. No menu Project, clique em Properties.. Para mais informações, consulte Introdução ao Project Designer.

  2. Sobre o Compilar guia, defina o valor no Option Strict caixa.

Para definir configurações de aviso no IDE

Quando você usa o Página de Compilação, Designer de Projeto (Visual Basic) em vez de um Option Strictde demonstrativo, você tem mais controle sobre as condições que geram erros. O configurações do aviso seção a Página Compile possui configurações que correspondem às três condições que causam um compilar- erro de tempo quando Option Strict está ativado. Veja essas configurações a seguir:

  • Conversão implícita

  • Ligação tardia; a chamada pode falhar em tempo de execução

  • Tipo implícito; objeto assumido

Ao definir Option Strict para em, todos os três essas definições deconfiguração de avisosão definidos como erro. Ao definir Option Strict para Off, todos os três estão definidas em Nenhum.

Você pode alterar individualmente cadaconfiguraçãode avisoconfiguração para Nenhum, Aviso, ou erro. Se todos os três definições deconfiguração de avisoserão definidas como erro, On consta o Option strict caixa. Se todos os três são definidos como Nenhum, Off aparece nesta caixa. Para qualquer outra combinação dessas configurações, (personalizada) é exibida.

Para definir o padrão Option Strict configuração para novos projetos

Quando você criar um projeto, o Option Strict configuração o Compilar for definido como o Option Strict configuração no Opçõescaixa de diálogo.

Para definir Option Strict nessa caixa de diálogo, sobre o Ferramentasmenu, clique em Opções de. No Opções caixa de diálogo, expandir projetos e soluçõese, em seguida, clique em Padrões de VB. A letra inicial padrão configuração no Padrões de VB é Off.

Definir Option Strict na linha de comando

Inclua a opção de compilador /optionstrict no comando vbc.

Exemplo

Os exemplos a seguir demonstram compilar-erros causados por conversões de tipo implícitas são restringir conversões de tempo. Esta categoria de erros corresponde do conversão implícita condição a Página Compile.

' 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

O exemplo a seguir demonstra um compilar-tempo erro causado por ligação tardia. Esta categoria de erros corresponde do ligação tardia; a chamada pode falhar em tempo de execução condição de Página Compile.

' 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

Os exemplos a seguir demonstram erros causados por variáveis que são declaradas com um tipo implícito de Object. Esta categoria de erros corresponde do tipo implícito; objeto assumido condição de Página Compile.

' 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

Consulte também

Tarefas

Como acessar membros de um objeto (Visual Basic)

Referência

Página de Compilação, Designer de Projeto (Visual Basic)

Instrução Option Explicit (Visual Basic)

Funções de conversão do tipo (Visual Basic)

/optionstrict

Caixa de diálogo Padrões do Visual Basic, Projetos, Opções

Conceitos

Conversões de Widening e Narrowing (Visual Basic)

Conversões implícitas e explícitas (Visual Basic)

Expressões inseridas no XML (Visual Basic)

Conversão de delegado reduzida (Visual Basic)

Associação tardia em soluções do Office