Instrução Imports (tipo e namespace .NET)

Permite que nomes de tipo sejam referenciados sem a qualificação de namespace.

Sintaxe

Imports [ aliasname = ] namespace
' -or-
Imports [ aliasname = ] namespace.element

Partes

Termo Definição
aliasname Opcional. Um alias ou nome de importação pelo qual o código pode se referir a namespace em vez da cadeia de caracteres de qualificação completa. Confira Nomes de elementos declarados.
namespace Obrigatórios. O nome totalmente qualificado do namespace a ser importado. Pode ser uma cadeia de caracteres de namespaces aninhada para qualquer nível.
element Opcional. O nome de um elemento de programação declarado no namespace. Pode ser qualquer elemento de contêiner.

Comentários

A instrução Imports permite que os tipos contidos em um determinado namespace sejam referenciados diretamente.

Você pode fornecer um único nome de namespace ou uma cadeia de caracteres de namespaces aninhados. Cada namespace aninhado é separado do próximo namespace de nível superior por um ponto (.), como ilustra o exemplo a seguir:

Imports System.Collections.Generic

Cada arquivo de origem pode conter qualquer número de instruções Imports. Elas devem seguir alguma declaraçâo de opção, como a instrução Option Strict, e devem preceder declarações de elemento de programação, como as instruções Module ou Class.

Você só pode usar Imports no nível do arquivo. Isso significa que o contexto de declaração para importação precisa ser um arquivo de origem, e não pode ser um namespace, uma classe, uma estrutura, um módulo, uma interface, um procedimento nem um bloco.

Observe que a instrução Imports não disponibiliza elementos de outros projetos e assemblies para seu projeto. A importação não ocupa o lugar de definir uma referência. Ela apenas remove a necessidade de qualificar nomes que já estão disponíveis no seu projeto. Para obter mais informações, consulte "Importar elementos que contêm" em Referências a elementos declarados.

Observação

Você pode definir instruções implícitas Imports usando a Página de Referências, Designer de Projeto (Visual Basic). Para mais informações, consulte Como adicionar ou remover namespaces importados (Visual Basic).

Aliases de importação

Um alias de importação define o alias para um namespace ou tipo. Os aliases de importação são úteis quando você precisa usar itens com o mesmo nome declarado em um ou mais namespaces. Para obter mais informações e um exemplo, consulte "Qualificar um nome de elemento" em Referências a elementos declarados.

Você não deve declarar um membro no nível do módulo com o mesmo nome de aliasname. Se você fizer isso, o compilador do Visual Basic usará aliasname apenas para o membro declarado e não o reconhecerá mais como um alias de importação.

Embora a sintaxe usada para declarar um alias de importação seja semelhante à usada para importar um prefixo do namespace de XML, os resultados são diferentes. Um alias de importação pode ser usado como uma expressão no seu código, enquanto um prefixo de namespace de XML pode ser usado apenas em literais XML ou propriedades do eixo XML como o prefixo para um nome qualificado de elemento ou atributo.

Nomes de elementos

Se você fornecer element, ele deve representar um elemento de contêiner, ou seja, um elemento de programação que pode conter outros elementos. Os elementos de contêiner incluem classes, estruturas, módulos, interfaces e enumerações.

O escopo dos elementos disponibilizados por uma instrução Imports depende se você especificar element. Se você especificar apenas namespace, todos os membros nomeados exclusivamente desse namespace e membros de elementos de contêiner dentro desse namespace estarão disponíveis sem qualificação. Se você especificar namespace e element, somente os membros desse elemento estarão disponíveis sem qualificação.

Exemplo 1

O exemplo a seguir lista todas as pastas no diretório C:\ usando a classe DirectoryInfo:

O código não tem instruções Imports na parte superior do arquivo. Portanto, as referências DirectoryInfo, StringBuilder e CrLf são totalmente qualificadas com os namespaces.

Public Function GetFolders() As String
    ' Create a new StringBuilder, which is used
    ' to efficiently build strings.
    Dim sb As New System.Text.StringBuilder

    Dim dInfo As New System.IO.DirectoryInfo("c:\")

    ' Obtain an array of directories, and iterate through
    ' the array.
    For Each dir As System.IO.DirectoryInfo In dInfo.GetDirectories()
        sb.Append(dir.Name)
        sb.Append(Microsoft.VisualBasic.ControlChars.CrLf)
    Next

    Return sb.ToString
End Function

Exemplo 2

O exemplo a seguir inclui instruções Imports para os namespaces referenciados. Portanto, os tipos não precisam ser totalmente qualificados com os namespaces.

' Place Imports statements at the top of your program.
Imports System.Text
Imports System.IO
Imports Microsoft.VisualBasic.ControlChars
Public Function GetFolders() As String
    Dim sb As New StringBuilder

    Dim dInfo As New DirectoryInfo("c:\")
    For Each dir As DirectoryInfo In dInfo.GetDirectories()
        sb.Append(dir.Name)
        sb.Append(CrLf)
    Next

    Return sb.ToString
End Function

Exemplo 3

O exemplo a seguir inclui instruções Imports que criam aliases para os namespaces referenciados. Os tipos são qualificados com os aliases.

Imports systxt = System.Text
Imports sysio = System.IO
Imports ch = Microsoft.VisualBasic.ControlChars
Public Function GetFolders() As String
    Dim sb As New systxt.StringBuilder

    Dim dInfo As New sysio.DirectoryInfo("c:\")
    For Each dir As sysio.DirectoryInfo In dInfo.GetDirectories()
        sb.Append(dir.Name)
        sb.Append(ch.CrLf)
    Next

    Return sb.ToString
End Function

Exemplo 4

O exemplo a seguir inclui instruções Imports que criam aliases para os tipos de referência. Os aliases são usados para especificar os tipos.

Imports strbld = System.Text.StringBuilder
Imports dirinf = System.IO.DirectoryInfo
Public Function GetFolders() As String
    Dim sb As New strbld

    Dim dInfo As New dirinf("c:\")
    For Each dir As dirinf In dInfo.GetDirectories()
        sb.Append(dir.Name)
        sb.Append(ControlChars.CrLf)
    Next

    Return sb.ToString
End Function

Confira também