Die gebräuchlichste Art, wie VB.NET-Namespaces von den meisten verwendet werden Programmierer soll dem Compiler mitteilen, welche .NET Framework-Bibliotheken für ein bestimmtes Programm benötigt werden. Wenn Sie eine "Vorlage" für Ihr Projekt auswählen (z. B. "Windows Forms-Anwendung"), ist eines der Dinge Sie wählen die spezifischen Namespaces aus, auf die in Ihrem automatisch verwiesen wird Projekt. Dadurch wird der Code in diesen Namespaces für Ihr Programm verfügbar.
Einige der Namespaces und die tatsächlichen Dateien, in denen sie sich für eine Windows Forms-Anwendung befinden, sind beispielsweise:
System> in System.dll
System. Daten> im System. Data.dll
System. Bereitstellung> System. Deployment.dll
System. Zeichnung> System. Drawing.dll
System. Windows. Formulare> System. Windows. Forms.dll
Sie können die Namespaces und Referenzen für Ihr Projekt in den Projekteigenschaften unter sehen (und ändern) Verweise Tab.
Diese Art, über Namespaces nachzudenken, lässt sie genauso aussehen wie "Codebibliothek", aber das ist nur ein Teil der Idee. Der eigentliche Vorteil von Namespaces ist die Organisation.
Die meisten von uns haben nicht die Möglichkeit, eine neue Namespace-Hierarchie einzurichten, da dies für eine große und komplizierte Codebibliothek im Allgemeinen nur einmal "am Anfang" erfolgt. Hier erfahren Sie jedoch, wie Sie die Namespaces interpretieren, die Sie in vielen Organisationen verwenden sollen.
Was Namespaces tun
Namespaces ermöglichen es, Zehntausende von .NET Framework-Objekten und alle Objekte, die VB-Programmierer in Projekten erstellen, so zu organisieren, dass sie nicht in Konflikt geraten.
Wenn Sie beispielsweise in .NET nach einem suchen Farbe Objekt, finden Sie zwei. Da ist ein Farbe Objekt in beiden:
System. Zeichnung
System. Windows. Medien
Wenn Sie eine hinzufügen Importe Anweisung für beide Namespaces (möglicherweise ist auch eine Referenz für die Projekteigenschaften erforderlich) ...
Importiert das System. Zeichnung
Importiert das System. Windows. Medien
... dann eine Aussage wie ...
Dim a As Farbe
... wird als Fehler mit dem Hinweis "Farbe ist mehrdeutig" gekennzeichnet, und .NET weist darauf hin, dass beide Namespaces ein Objekt mit diesem Namen enthalten. Diese Art von Fehler wird als "Namenskollision" bezeichnet.
Dies ist der wahre Grund für "Namespaces" und auch die Art und Weise, wie Namespaces in anderen Technologien (wie XML) verwendet werden. Namespaces ermöglichen die Verwendung desselben Objektnamens, z Farbe, wenn der Name passt und die Dinge trotzdem organisiert bleiben. Sie könnten eine definieren Farbe Objekt in Ihrem eigenen Code und halten Sie es von denen in .NET (oder dem Code anderer Programmierer) verschieden.
Namespace MyColor
Farbe der öffentlichen Klasse
Unterfarbe ()
' Etwas tun
End Sub
Klasse beenden
Namespace beenden
Sie können auch die verwenden Farbe Objekt an einer anderen Stelle in Ihrem Programm wie folgt:
Dim c As New MyColor. Farbe
c. Farbe()
Beachten Sie, dass jedes Projekt in einem Namespace enthalten ist, bevor Sie sich mit einigen anderen Funktionen befassen. VB.NET verwendet den Namen Ihres Projekts (WindowsApplication1 für eine Standardformularanwendung (wenn Sie sie nicht ändern) als Standardnamespace. Um dies zu sehen, erstellen Sie ein neues Projekt (wir haben den Namen verwendet NSProj und überprüfen Sie das Objektbrowser-Tool):
- Klicken Hier um die Abbildung anzuzeigen
- Drücke den Zurück Schaltfläche in Ihrem Browser, um zurückzukehren
Der Objektbrowser zeigt Ihren neuen Projektnamespace (und die darin automatisch definierten Objekte) direkt zusammen mit den .NET Framework-Namespaces an. Diese Fähigkeit von VB.NET, Ihre Objekte mit .NET-Objekten gleichzusetzen, ist einer der Schlüssel für die Leistung und Flexibilität. Aus diesem Grund zeigt Intellisense beispielsweise Ihre eigenen Objekte an, sobald Sie sie definieren.
Um es noch besser zu machen, definieren wir ein neues Projekt (Wir haben unser Projekt benannt NewNSProj in der gleichen Lösung (verwenden Datei > Hinzufügen > Neues Projekt ...) und codieren Sie einen neuen Namespace in diesem Projekt. Und damit es mehr Spaß macht, fügen wir den neuen Namespace in ein neues Modul ein (wir haben es benannt NewNSMod). Und da ein Objekt als Klasse codiert werden muss, haben wir auch einen Klassenblock (benannt) hinzugefügt NewNSObj). Hier ist der Code und der Projektmappen-Explorer, um zu zeigen, wie er zusammenpasst:
- Klicken Hier um die Abbildung anzuzeigen
- Drücke den Zurück Schaltfläche in Ihrem Browser, um zurückzukehren
Da Ihr eigener Code "genau wie Framework-Code" ist, müssen Sie einen Verweis auf hinzufügen NewNSMod im NSProj um das Objekt im Namespace zu verwenden, obwohl sie sich in derselben Lösung befinden. Sobald dies erledigt ist, können Sie ein Objekt in deklarieren NSProj basierend auf der Methode in NewNSMod. Sie müssen das Projekt auch "erstellen", damit ein tatsächliches Objekt vorhanden ist, auf das verwiesen werden kann.
Dim o As New NewNSProj. AVBNS.NewNSMod. NewNSObj
Ö. AVBNSMethod ()
Das ist schon ein ziemlicher Dim Aussage obwohl. Wir können das verkürzen, indem wir ein Importe Anweisung mit einem Alias.
Importiert NS = NewNSProj. AVBNS.NewNSMod. NewNSObj
...
Dim o As New NS
Ö. AVBNSMethod ()
Durch Klicken auf die Schaltfläche Ausführen wird das angezeigt MsgBox aus dem AVBNS-Namespace "Hey! Es funktionierte!"
Wann und warum Namespaces verwendet werden
Alles war bisher wirklich nur so Syntax - das Codierung Regeln, die Sie bei der Verwendung von Namespaces befolgen müssen. Aber um wirklich Vorteile zu ziehen, brauchen Sie zwei Dinge:
- Eine Voraussetzung für die Organisation von Namespaces. Sie benötigen mehr als nur ein "Hello World" -Projekt, bevor sich die Organisation von Namespaces auszahlt.
- Ein Plan, sie zu nutzen.
Allgemein, Microsoft empfiehlt, dass Sie den Code Ihrer Organisation mithilfe einer Kombination Ihres Firmennamens mit dem Produktnamen organisieren.
Wenn Sie beispielsweise der Chefsoftwarearchitekt für Dr. No's Nose Knows Plastic Surgery sind, möchten Sie möglicherweise Ihre Namespaces wie ...
DRNo
Beratung
ReadTheirWatchNChargeEm
TellEmNuthin
Chirurgie
ElephantMan
MyEyeLidsRGone
Dies ähnelt der Organisation von .NET ...
Objekt
System
Ader
IO
Linq
Daten
Odbc
Sql
Die mehrstufigen Namespaces werden durch einfaches Verschachteln der Namespace-Blöcke erreicht.
Namespace DRNo
Namespace-Chirurgie
Namespace MyEyeLidsRGone
'VB-Code
Namespace beenden
Namespace beenden
Namespace beenden
oder
Namespace DRNo. Chirurgie. MyEyeLidsRGone
'VB-Code
Namespace beenden