Compartilhar via


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

Exibição do IntelliSense da declaração.

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

Exibição do IntelliSense da declaração.

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

  1. In Solution Explorer, select a project. On the Project menu, click Properties. For more information, see Introdução ao Project Designer.

  2. Click the Compile tab.

  3. 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 Dim (Visual Basic)

Opção Comparar Declarações

Instrução Option Explicit (Visual Basic)

Opção declaração estrito

Caixa de diálogo Opções de padrões, projetos, Visual Basic

/optioninfer

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.