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 diversi modelli in Visual Studio o VB.NET Express. Fai 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, useremo il sistema. Spazio dei nomi dei dati - che fornisce la tecnologia dei dati ADO.NET.

Sistema. I dati vengono aggiunti alle applicazioni Windows come riferimento per impostazione predefinita utilizzando il modello Applicazione Windows Form VB.NET.

instagram viewer

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 Sistema. Dati

 Modulo di classe pubblica 1

 Eredita il sistema. Finestre. Le forme. Modulo

 Sottomodulo privato1_Load (...

 Dim Test As OleDb. OleDbCommand

 End Sub

 End Class 

e

 importazioni Sistema. Dati. OleDb

 Modulo di classe pubblica 1

 Eredita il sistema. Finestre. Le forme. Modulo

 Sottomodulo privato1_Load (...

 Dim Test As OleDbCommand

 End Sub

 End Class 

sono entrambi equivalenti. Ma ...

 importazioni Sistema. Dati

 Modulo di classe pubblica 1

 Eredita il sistema. Finestre. Le forme. Modulo

 Sottomodulo privato1_Load (...

 Dim Test As OleDbCommand

 End Sub

 End Class 

genera un errore di sintassi ("Tipo 'OleDbCommand' non definito") a causa di Importa lo spazio dei nomi Sistema di qualificazione. I dati non forniscono informazioni sufficienti per trovare l'oggetto OleDbCommand.

Anche se la qualificazione dei nomi nel tuo codice sorgente del programma può essere coordinato a qualsiasi livello nella gerarchia 'apparente', devi comunque scegliere lo spazio dei nomi giusto come riferimento. Ad esempio, .NET fornisce un sistema. Spazio dei nomi Web e un intero elenco di altri che iniziano con Sistema. Ragnatela ...

Nota

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