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.
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“.
also eine goldige Erklärung hast du ja schon bekommen
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
Lager 1 und Lager 2 sind in dem Falle die Namespace
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“