Declaração de Option Infer
Permite o uso de inferência de tipos locais ao declarar variáveis.
Option Infer { On | Off }
Partes
Termo |
Definição |
On |
Opcional.Permite inferência de tipo local. |
Off |
Opcional.Desabilita inferência de tipo local. |
Comentários
Para definir Option Infer em um arquivo, digite Option Infer On ou Option Infer Off na parte superior do arquivo, antes de qualquer outro código fonte.Se o valor definido para Option Inferem um arquivo conflita com o valor definido no IDE ou na linha de comando, o valor no arquivo possui precedência.
Ao definir Option Infer para On, você pode declarar variáveis locais sem explicitamente indicando um tipo de dados.O compilador infere o tipo de dados de uma variável do tipo de sua expressão de inicialização.
Na ilustração a seguir, Option Infer está ativado.A variável na declaração do Dim someVar = 2 é declarado como um número inteiro por inferência de tipo.
IntelliSense quando Option Infer está ligado.
Na ilustração a seguir, Option Infer está desativada.A variável na declaração do Dim someVar = 2 é declarada como uma Object por inferência de tipo.Neste exemplo, o Option Strict for definida como Off sobre o Compilar página Project Designer (Visual Basic).
IntelliSense quando Option Infer está desativado
Observação |
---|
Quando uma variável é declarada como uma Object, o tipo de tempo de execução pode alterar, enquanto o programa estiver sendo executado.Visual Basicexecuta operações chamadas boxing e unboxing para converter entre um Object e um tipo de valor, o que torna a execução mais lenta.Para obter informações sobre conversão boxing e unboxing, consulte o Especificação de linguagem Visual Basic. |
Inferência de tipo aplica-se no nível do procedimento e não se aplica fora de um procedimento em uma classe, estrutura, módulo ou interface.
Para mais informações, consulte: Inferência de tipo de local (Visual Basic).
Quando um Option Infer de instrução não estiver presente
Se o código-fonte não contém um Option Infer instrução, o Option Infer definição na Compilar página Project Designer (Visual Basic) é usado.Se o compilador de linha de comando for usado, o /optioninfer opção de compilador é usada.
Para definir o Option Infer no IDE
Em Solution Explorer, selecione um projeto.No menu Project, clique em Properties..Para obter mais informações, consulte Introdução ao Project Designer.
Clique na guia Compile.
Defina o valor no Option infer caixa.
Quando você cria um novo projeto, o Option Infer definição na Compilar for definido como o Option Infer definição na Padrões de VB caixa de diálogo.Para acesso a Padrões de VB caixa de diálogo, diante a Ferramentas menu, clique em Opções.No Opções caixa de diálogo caixa, expanda projetos e soluçõese, em seguida, clique em Padrões de VB.A configuração padrão inicial no Padrões de VB é On.
Colocando Option Infer na linha de comando
- Inclua a opção de compilador /optioninfer no comando vbc.
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 um inicializador em um Dim instrução.
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á ativa, ocorrerá um erro em tempo de compilação. |
Não |
Sim |
Dim qty = 5 |
Se Option Infer é ativado (padrão), a variável usa os dados de tipo do inicializador.Consulte Inferência de tipo de 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á ativa, ocorrerá um erro em tempo de compilação. |
Sim |
Não |
Dim qty As Integer |
A variável é inicializada com o valor padrão para o tipo de dados.Para obter mais informações, consulte Instrução (Visual Basic) Dim. |
Sim |
Sim |
Dim qty As Integer = 5 |
Se o tipo de dados do inicializador não é convertido para o tipo de dados especificado, ocorrerá um erro de tempo de compilação. |
Exemplo
O exemplo a seguir demonstra como a declaraçãoOption Infer permite inferência de tipo local.
' Enable Option Infer before trying these examples.
' Variable num is an Integer.
Dim num = 5
' Variable dbl is a Double.
Dim dbl = 4.113
' Variable str is a String.
Dim str = "abc"
' Variable pList is an array of Process objects.
Dim pList = Process.GetProcesses()
' Variable i is an Integer.
For i = 1 To 10
Console.WriteLine(i)
Next
' Variable item is a string.
Dim lst As New List(Of String) From {"abc", "def", "ghi"}
For Each item In lst
Console.WriteLine(item)
Next
' Variable namedCust is an instance of the Customer class.
Dim namedCust = New Customer With {.Name = "Blue Yonder Airlines",
.City = "Snoqualmie"}
' Variable product is an instance of an anonymous type.
Dim product = New With {Key .Name = "paperclips", .Price = 1.29}
' If customers is a collection of Customer objects in the following
' query, the inferred type of cust is Customer, and the inferred type
' of custs is IEnumerable(Of Customer).
Dim custs = From cust In customers
Where cust.City = "Seattle"
Select cust.Name, cust.ID
O exemplo a seguir demonstra o tipo de tempo de execução pode ser diferente quando uma variável é identificada como um Object.
' Disable Option Infer when trying this example.
Dim someVar = 5
Console.WriteLine(someVar.GetType.ToString)
' If Option Infer is instead enabled, the following
' statement causes a run-time error. This is because
' someVar was implicitly defined as an integer.
someVar = "abc"
Console.WriteLine(someVar.GetType.ToString)
' Output:
' System.Int32
' System.String
Consulte também
Referência
Opção Explicit Statement (Visual Basic)
Caixa de diálogo Opções de padrões, projetos, Visual Basic
Boxing e Unboxing (C# Guia de programação)