Declaração Option Infer
Enables the use of local type inference in declaring variables.
Option Infer { On | Off }
Parts
Term |
Definition |
On |
Optional. Enables local type inference. |
Off |
Optional. Disables local type inference. |
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 de fonte . If the value set for Option Infer in a file conflicts with the value set in the IDE or on the command line, the value in the file has precedence.
When you set Option Infer to On, you can declare variables without explicitly stating a data type. The compiler infers the data type of a variable from the type of its initialization expression.
Na ilustração a seguir, Option Infer está ativado. A variável na declaração Dim someVar = 2 é declarado como um inteiro por inferênciade tipo.
IntelliSense when Option Infer is on
Na ilustração a seguir, Option Infer é desativadas. A variável na declaração Dim someVar = 2 é declarado como um objeto por inferênciade tipo. Neste exemplo, o Option Strict configuração Off na Compilar a página, Designer de projeto (Visual Basic).
IntelliSense quando Option Infer está desativado
Quando uma variável é declarada como um objeto, o tempo de execução-tipo pode alterar durante a execução do programa .
For additional information, see Inferência de tipo de variável local (Visual Basic).
Quando um Option Infer de instrução não está presente
Se o código fonte não contém um Option Infer demonstrativo, o Option Infer configuração o Compilar a página, Designer de projeto (Visual Basic) é usado. Se o compilador delinha de comando - é usado, o /optioninfer opção do compilador é usada.
Para definir o Option Infer no IDE
In Solution Explorer, select a project. On the Project menu, click Properties. For more information, see Introdução ao Project Designer.
Click the Compile tab.
Defina o valor no Option infer caixa.
Quando você criar um novo projeto, o Option Infer configuração o compilar for definido como o Option Infer configuração no Padrões de VB caixa de diálogo. Para acesso a Padrões de VB caixa de diálogodiante do Ferramentas menu, clique em Opções. No Opções caixa de diálogo, expandir projetos e soluçõese em seguida, clique em Padrões de VB. Inicial padrão configuração no Padrões de VB é On.
To set Option Infer on the command line
- Include the /optioninfer compiler option in the vbc command.
Padrão Valores e tipos de dados
A tabela a seguir descreve os resultados de várias combinações de especificar o tipo de dados e o inicializador de um Dim demonstrativo.
Tipo de dados especificado? |
Inicializador especificado? |
Example |
Result |
No |
No |
Dim qty |
Se Option Strict está desativado (padrão), a variável é definida como Nothing. Se Option Strict está ativado, uma compilar- erro de tempo ocorre. |
No |
Yes |
Dim qty = 5 |
Se Option Infer está ativado (padrão), a variável leva o tipo de dados do inicializador. See Inferência de tipo de variável 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á ativado, uma compilar-em tempo de erro ocorre. |
Yes |
No |
Dim qty As Integer |
A variável é inicializada com o valor padrão para o tipo de dados. For more information, see Instrução Dim (Visual Basic). |
Yes |
Yes |
Dim qty As Integer = 5 |
Se o tipo de dados do inicializador não é especificado tipo de dados, uma compilarconversíveis- erro de tempo ocorre. |
Exemplo
The following examples demonstrate how the Option Infer statement enables local type inference.
' 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 que o tempo de execução-tipo pode diferir quando uma variável é identificado como um objeto.
' 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
Instrução Option Explicit (Visual Basic)
Caixa de diálogo Opções de padrões, projetos, Visual Basic
Conceitos
Inferência de tipo de variável local (Visual Basic)
Histórico de alterações
Date |
History |
Motivo |
Março de 2011 |
Os comentários de modificação e adicionados a um exemplo. |
Aprimoramento de informações. |