VB.NET-Importanweisung versus Referenzen

Die tatsächliche Auswirkung der Imports-Anweisung in VB.NET führt häufig zu Verwirrung bei Personen, die die Sprache lernen. Die Interaktion mit VB.NET-Referenzen sorgt für noch mehr Verwirrung. Wir werden das in diesem Quick-Tipp klären.

Hier ist eine kurze Zusammenfassung der ganzen Geschichte. Dann gehen wir die Details durch.

Ein Verweis auf einen VB.NET-Namespace ist eine Voraussetzung und muss einem Projekt hinzugefügt werden, bevor die Objekte im Namespace verwendet werden können. (Eine Reihe von Referenzen wird automatisch für die hinzugefügt verschiedene Vorlagen in Visual Studio oder VB.NET Express. Klicken Sie im Projektmappen-Explorer auf "Alle Dateien anzeigen", um zu sehen, was sie sind.) Die Imports-Anweisung ist jedoch nicht erforderlich. Stattdessen handelt es sich lediglich um eine Codierungsfunktion, mit der kürzere Namen verwendet werden können.

Schauen wir uns nun ein aktuelles Beispiel an. Um diese Idee zu veranschaulichen, werden wir das System verwenden. Datennamespace - bietet ADO.NET-Datentechnologie.

instagram viewer

System. Daten werden Windows-Anwendungen standardmäßig als Referenz mithilfe der VB.NET Windows Forms-Anwendungsvorlage hinzugefügt.

Hinzufügen eines Namespace zur Referenzsammlung

Durch Hinzufügen eines neuen Namespace zur References-Auflistung in einem Projekt werden die Objekte in diesem Namespace auch für das Projekt verfügbar. Der sichtbarste Effekt davon ist, dass Sie mit Visual Studio "Intellisense" die Objekte in Popup-Menüfeldern finden können.

Wenn Sie versuchen, ein Objekt in Ihrem Programm ohne Referenz zu verwenden, generiert die Codezeile einen Fehler.

Die Imports-Anweisung ist dagegen niemals erforderlich. Das einzige, was es tut, ist zuzulassen, dass der Name aufgelöst wird, ohne vollständig qualifiziert zu sein. Mit anderen Worten (Hervorhebung hinzugefügt, um die Unterschiede zu zeigen).

 Importe System. Daten

 Öffentliche Klasse Form1

 Erbt das System. Windows. Formen. Bilden

 Private Sub Form1_Load (...

 Dim Test As OleDb. OleDbCommand

 End Sub

 Klasse beenden 

und

 Importe System. Daten. OleDb

 Öffentliche Klasse Form1

 Erbt das System. Windows. Formen. Bilden

 Private Sub Form1_Load (...

 Dim Test As OleDbCommand

 End Sub

 Klasse beenden 

sind beide gleichwertig. Aber ...

 Importe System. Daten

 Öffentliche Klasse Form1

 Erbt das System. Windows. Formen. Bilden

 Private Sub Form1_Load (...

 Dim Test As OleDbCommand

 End Sub

 Klasse beenden 

führt zu einem Syntaxfehler ("Typ 'OleDbCommand' ist nicht definiert") aufgrund der Importiert den Namespace Qualifikationssystem. Die Daten bieten nicht genügend Informationen, um das Objekt OleDbCommand zu finden.

Obwohl die Qualifikation von Namen in Ihrem Programmquellcode kann auf jeder Ebene in der 'scheinbaren' Hierarchie koordiniert werden, Sie müssen immer noch den richtigen Namespace auswählen, auf den verwiesen werden soll. Beispielsweise stellt .NET ein System bereit. Web-Namespace und eine ganze Liste anderer, beginnend mit System. Netz ...

Hinweis

Es gibt zwei völlig unterschiedliche DLL-Dateien für die Referenzen. Sie müssen die richtige auswählen, da WebService in keiner von ihnen eine Methode ist.