Was ist ein Namespace?

Hallo Experten,

ich programmiere schon seit Jahren in VBA für Excel (aktuell in der 2007er Version) und würde mich inzwischen auch als Fortgeschrittenen bezeichnen.
Immer mal wieder stolpere ich aber über den Begriff „Namespace“, kann mir aber gar nichts darunter vorstellen. Gerade habe ich mir die Erklärung bei Wikipedia dargelesen, aber auch das verstehe ich nicht. Ist denn die Application ein Namespace und jedes Workbook einer - oder ist nur die Application einer und alles „darunter“ diesem zugehörig?
Welche Vorteile bringt mir die Verwendung von Namespaces?

Ich bitte um Beispiele. Damit versteht man ein Problem immer am besten.

Vielen Dank
Martin

Ich bitte um Beispiele. Damit versteht man ein Problem immer
am besten.

Hallo Martin,

vielleicht hilft das, sind zumindest kleine Beispielzeilen drin:
http://msdn.microsoft.com/de-de/library/zt9tafza%28V…

Gruß
Reinhard

vielleicht hilft das…

Nicht wirklich. Zur Not tun es auch Beispiele mit Äpfeln und Birnen o.ä. :wink:

Hi,

stell dir mal 2 Familien vor.
Familie Müller und Familie Meyer. Beide haben Kinder und eines der Kinder heißt in in beiden Familien „Hans“.

Die Mutter der Familie Meyer ruft zum Essen. Dabei ruft sie „Hans! Essen ist fertig“ Das funktioniert ohne Probleme, da es in der Familie Meyer nur einen Hans gibt.

Wenn beide Hans-Kinder aber in der selben Schule sind und der Koch der Mensa ruft „Hans! Essen ist fertig“. Welcher Hans ist gemeint?

Hier ist ein Namespace notwendig! Dieser Namespace wird in diesem Fall umgangssprachlich auch „Familienname“ genannt. Erst wenn der Koch ruft „Meyer, Hans! Essen ist fertig“ ist deutlich wer gemeint ist.

Namespaces dienen also dazu gleiche Namen, Zahlen usw. eindeutig adressieren zu können.

Telefonnummern haben übrigens auch Namespaces.
Das nennt man dann „Vorwahl“.

Gruss
Joey

Hallo Langhaxada,

also eine goldige Erklärung hast du ja schon bekommen :smile:
Aber ich versuche mich auch mal. Das bezieht sich wiederrum aber auf .NET.

Du musst wissen in .Net arbeitest du mit Klassen, wovon es zig tausende gibt! Nun kann es vorkommen das es einige Klassen doppelt gibt, zum Bsp. durch eigene Implementierung. Das Framework worauf du zugreifst und was die Klassen beinhaltet, weiss ja nicht welches es nehmen sollen. Also hat man kurzerhand den „Namespace“ erfunden. Durch Angabe vom Namespace weiss das Framework worauf es zugreifen muss.

Also Bsp. Mal

Du hast 2 Lagerhallen. Beide sind gefüllt mit Äpfel und Birnen. Nun sagst du, hey hole mir mal ne Kiste Birnen. Woher soll dein Angestellter wissen, woher er die holen soll!

Anders ist es wenn die Lagerhalle 1 sich Lager 1 nennt und die Lagerhalle 2 sich Lager 2 schimpft. Nun sage mal " Hey hole mir mal aus Lager 2 eine Kiste Birnen und aus Lager 1 eine Kiste Äpfel :smile:

Lager 1 und Lager 2 sind in dem Falle die Namespace :smile:

Und noch einmal was praxisbezogen

Public Class Form1

 Public Sub BringBirnen()
 MsgBox("Birnen")
 End Sub

 Sub Test()
 BringBirnen()
 Dim l1 As New Lager1.Form1
 Dim l2 As New Lager2.Form1
 l1.BringBirnen()
 l2.BringBirnen()
 End Sub

 Private Sub Button1\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Call Test()
 End Sub
End Class

Namespace Lager1
 Class Form1
 Public Sub BringBirnen()
 MsgBox("Birnen aus Lager1")
 End Sub
 End Class
End Namespace

Namespace Lager2
 Class Form1
 Public Sub BringBirnen()
 MsgBox("Birnen aus Lager2")
 End Sub
 End Class
End Namespace

Wenn du nun auf den Button klickst, wird die Sub Test aufgerufen. Was passiert nun?
Anhand des Namespace wird folgendes angezeigt

„Birnen“
„Birnen aus Lager 1“
„Birnen aus Lager 2“

Alles klar ?

MfG Alex

2 Like

hallo,

wirklich schöne und für den laien verständliche erklärung. ich erlaube mir diese zu verwenden, falls ich mal wieder namespaces erklären muß.

lg

Danke an Joey und Alex für die sehr guten Erklärungen! Jetzt habe ICH es auch verstanden. :wink:)

Schönes Wochenende
Martin

Jetzt versteh’ ich auch Reinhards Beispiel!!!