Dichiarazione di importazione VB.NET contro riferimenti

L'effetto reale dell'istruzione Imports in VB.NET è spesso fonte di confusione per le persone che imparano la lingua. E l'interazione con i riferimenti VB.NET crea ancora più confusione. Lo chiariremo in questo suggerimento rapido.

Ecco un breve riassunto di tutta la storia. Quindi esamineremo i dettagli.

Un riferimento a uno spazio dei nomi VB.NET è un requisito e deve essere aggiunto a un progetto prima di poter utilizzare gli oggetti nello spazio dei nomi. (Una serie di riferimenti viene aggiunta automaticamente per i diversi modelli in Visual Studio o VB.NET Express. Fare clic su "Mostra tutti i file" in Esplora soluzioni per vedere quali sono.) Ma l'istruzione Imports non è un requisito. Invece, è semplicemente una comodità di codifica che consente di utilizzare nomi più brevi.

Ora diamo un'occhiata a un esempio reale. Per illustrare questa idea, utilizzeremo lo spazio dei nomi System.Data, che fornisce la tecnologia dei dati ADO.NET.

System.Data viene aggiunto alle applicazioni Windows come riferimento per impostazione predefinita utilizzando il modello Applicazione Windows Form VB.NET.

Aggiunta di uno spazio dei nomi nella raccolta riferimenti

L'aggiunta di un nuovo spazio dei nomi alla raccolta Riferimenti in un progetto rende gli oggetti in quello spazio dei nomi disponibili anche per il progetto. L'effetto più evidente di ciò è che Visual Studio "Intellisense" ti aiuterà a trovare gli oggetti nelle finestre di menu popup.

Se si tenta di utilizzare un oggetto nel programma senza un riferimento, la riga di codice genera un errore.

La dichiarazione delle importazioni, d'altra parte, non è mai richiesta. L'unica cosa che fa è consentire al nome di essere risolto senza essere pienamente qualificato. In altre parole (enfasi aggiunta per mostrare le differenze).

 importazioni System.Data

 Modulo di classe pubblica 1

    Eredita System.Windows.Forms.Form

    Sottomodulo privato1_Load (... 

       Dim Test As OleDb.OleDbCommand

    End Sub

 End Class 

e

 importazioni System.Data.OleDb

 Modulo di classe pubblica 1

    Eredita System.Windows.Forms.Form

    Sottomodulo privato1_Load (... 

       Dim Test As OleDbCommand

    End Sub

 End Class 

sono entrambi equivalenti. Ma…

 importazioni System.Data

 Modulo di classe pubblica 1

    Eredita System.Windows.Forms.Form

    Sottomodulo privato1_Load (... 

       Dim Test As OleDbCommand

    End Sub

 End Class 

genera un errore di sintassi ("Tipo 'OleDbCommand' non definito") a causa della qualificazione dello spazio dei nomi Imports System.Data non fornisce informazioni sufficienti per trovare l'oggetto OleDbCommand.

Sebbene la qualificazione dei nomi nel codice sorgente del programma possa essere coordinata a qualsiasi livello nella gerarchia "apparente", è comunque necessario scegliere lo spazio dei nomi giusto a cui fare riferimento. Ad esempio, .NET fornisce uno spazio dei nomi System.Web e un intero elenco di altri che iniziano con System.Web ...

Nota

Esistono due file DLL completamente diversi per i riferimenti. Devi scegliere quello giusto perché WebService non è un metodo in uno di essi.