Compartilhar via


Inferência de tipos local

O compilador de Visual Basic 2008 usa inferência de tipos de tipos para determinar os tipos de dados de variáveis locais declarados sem um As cláusula. O compilador infere o tipo de variável do tipo da expressão de inicialização.Isso permite que você declarar variáveis sem declarando explicitamente um tipo, conforme mostrado no exemplo a seguir.

Public Sub inferenceExample()

    ' Using explicit typing.
    Dim num1 As Integer = 3

    ' Using local type inference.
    Dim num2 = 3

End Sub
Observação:

inferência de tipos de tipos local não pode ser usada para declarar os campos de classe.Se num2 no exemplo anterior foram um campo em vez de uma variável local, a declaração causaria um erro com Option Strict e seria classificar num2 sistema autônomo um Object com Option Strict logoff. Da mesma forma, os tipos de variáveis estáticas não podem ser deduzido quando Option Strict está ativado. Com Option Strict logoff, o tipo de staticVar em Static staticVar = 5 é Object.

Código que usa digite inferência de tipos de se parece com o código que depende de associação tardia.No entanto, inferência de tipos fortemente a variável em vez de deixá-lo sistema autônomo Object. O compilador usa o inicializador de variável para determinar o tipo da variável em time de compilar para produzir código early-limite.No exemplo anterior, num2 é tipado sistema autônomo um Integer.

O comportamento de early limite variáveis difere das variáveis de ligação tardia, para o qual o tipo é conhecido apenas em time de execução.Saber o tipo de início, o compilador identificar problemas antes da execução, alocar memória com precisão e executar outras otimizações.associação inicial também permite que o ambiente de desenvolvimento integrado do Visual Basic (IDE) para fornecer o IntelliSense ajuda sobre os membros de um objeto.associação inicial também é preferencial para o desempenho.Isso ocorre porque todos sistema autônomo dados armazenados em uma variável de ligação tardia devem ser empacotados sistema autônomo tipo Object, e acessar membros do tipo em time de execução faz com que o programa mais lento.

Observação:

Se você não quiser num2 no exemplo anterior para ser digitadas sistema autônomo um Integer, você pode especificar outro tipo, usando uma declaração sistema autônomo Dim num3 As Object = 3 ou Dim num4 As Double = 3.

Exemplos

inferência de tipos de tipos ocorre quando uma variável local é declarada sem uma As cláusula e um valor atribuído. O compilador usa o tipo do valor sistema autônomo o tipo da variável.Por exemplo, as linhas de cada código a seguir declaram uma variável do tipo String.

' Using explicit typing.
Dim name1 As String = "Springfield"

' Using local type inference.
Dim name2 = "Springfield"

O código a seguir demonstra duas formas equivalentes de criar uma matriz de inteiros.

' Using explicit typing.
Dim someNumbers1() As Integer = New Integer() {4, 18, 11, 9, 8, 0, 5}

' Using local type inference.
Dim someNumbers2 = New Integer() {4, 18, 11, 9, 8, 0, 5}

Você pode usar inferência de tipos de tipos para determinar o tipo de uma variável de controle de loop.O código a seguir, o compilador infere que number é um Integer, pois someNumbers2 é uma matriz de inteiros.

Dim total = 0
For Each number In someNumbers2
    total += number
Next

inferência de tiposs de tipo de variável local pode ser usado em Using instruções para estabelecer o tipo de nome de recurso, sistema autônomo demonstra o exemplo a seguir.

Using proc = New System.Diagnostics.Process
    ' Insert code to work with the resource.
End Using

O tipo de uma variável pode ser deduzido dos valores de retorno das funções, sistema autônomo demonstra o exemplo a seguir.Ambos os pList1 e pList2 são listas de processos.

' Using explicit typing.
Dim pList1() As Process = Process.GetProcesses()

' Using local type inference.
Dim pList2 = Process.GetProcesses()

Opção Infer

Uma nova opção, Option Infer, permite que você especifique se inferência de tipos de tipos local é permitida em um arquivo em particular. Para permitir ou bloquear a opção, digite um dos seguintes instruções no início do arquivo.

Option Infer On

Option Infer Off

Se você não especificar um valor de Option Infer seu código, o compilador padrão é Option Infer On para projetos criados no Visual Basic 2008, e Option Infer Off para projetos de upgrade de versões anteriores. Para obter mais informações, consulte Declaração Option Infer e /optioninfer.

Observação:

Se o valor conjunto para Option Infer em um arquivo estiver em conflito com o valor definido no IDE ou na linha de comando, o valor no arquivo tem precedência.

Restrições

inferência de tipos de tipos pode ser usada somente para as variáveis locais não-estático; não pode ser usado para determinar o tipo de classe de campos, propriedades ou funções.

Consulte também

Conceitos

Tipos anônimos

Início e associação tardia

Introdução ao LINQ no Visual Basic

Referência

For each... Next demonstrativo (Visual Basic)

For... Next demonstrativo (Visual Basic)

Declaração Option Infer

/optioninfer

Date

History

Motivo

Julho de 2008

Alterou o nome da variável de controle de loop no texto na seção "Exemplos" denum para number para corresponder ao nome no código.

Comentários do cliente.