Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 07.11.2011, 02:11 Titel: Namespace organisation |
|
|
huhu,
hab mal eine Frage zu Namespace und der Variablen deklarierungen...
eben dachte ich noch ich habe ein organisatorisches problem da ich innerhalb verschachtelter namespaces zugriff auf variablen anderer ebenen bräuchte und glaubte das würde so nicht gehen, jetzt hab ich hier mal ein ganz einfachen test als beispiel, bei dem ich merkte das es doch ganz einfach geht, ABER was mich dabei wundert ist, muss ich im namespace variablen nicht als shared oder common shared deklarieren?
hier kann ich ohne shared ect innerhalb einer sub auf alle variablen in den namespaces zugreifen...
Code: | Namespace Test1
Dim bla as Integer = 99
Namespace A
Dim bla as Integer = 123
Namespace B
Dim bla as Integer = 456
Sub PBla()
?Test1.bla
?Test1.A.bla
?Test1.A.B.bla
End Sub
End Namespace
End Namespace
End Namespace
Test1.A.B.PBla()
sleep |
_________________
 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 07.11.2011, 11:18 Titel: |
|
|
Ich kann noch mehr verwirren
Code: | Namespace Test1
Dim bla as Integer = 99
Namespace A
Dim bla as Integer = 123
Namespace B
Dim bla as Integer = 456
Sub PBla()
?Test1.bla
?A.bla ' dies find ich erstaunlich, nicht Test1.A.bla?
?bla 'hier bin ich im Namespace B
End Sub
End Namespace
End Namespace
End Namespace
Test1.A.B.PBla()
?
?Test1.bla
?Test1.A.bla
?Test1.A.B.bla
Sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 07.11.2011, 18:09 Titel: |
|
|
Soweit ich das immer verstanden habe, sind Namespaces sowieso SHARED, womit du ja auch in einer SUB (außerhalb des Namespaces) auf sie zugreifen kannst.
Voltas Beobachtung ist interessant; statt '?bla' funktioniert nämlich auch '?B.bla'
Ich kann mir das nur so erklären, dass man an dieser Stelle in allen drei Namespace-Ebenen gleichzeitig ist und nur die inneren Werte bei Bedarf die äußeren überschreiben. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Sannaj
Anmeldungsdatum: 19.12.2010 Beiträge: 35
|
Verfasst am: 07.11.2011, 22:12 Titel: |
|
|
Namespaces sind in sich gekapselt. Das heißt, das alle Variable in einem Namespace zuerst lokal, dann die Hierarchie aufsteigend gesucht werden.
Wenn du also dein Programm abspielst passiert:
In sub PBla(): '(befindet sich in Test1.A.B)
?bla
-> durchsuche Test1.A.B nach var bla -> var gefunden "Test1.A.B.bla"
?A.bla
-> durchsuche Test1.A.B nach ns A -> ns nicht gefunden.
-> durchsuche Test1.A nach ns A -> ns nicht gefunden.
-> durchsuche Test1 nach ns A -> ns gefunden "Test1.A"
-> durchsuche Test1.A nach var bla -> gefunden "Test1.A.bla"
?Test1.bla
-> durchsuche Test1.A.B nach ns Test1 -> ns nicht gefunden.
-> durchsuche Test1.A nach ns Test1 -> ns nicht gefunden.
-> durchsuche Test1 nach ns Test1 -> ns nicht gefunden.
-> durchsuche global ns nach ns Test1 -> ns gefunden "Test1"
-> durchsuche Test1 nach var bla -> gefunden "Test1.bla"
ns = Namespace
var = Variable |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 08.11.2011, 11:22 Titel: |
|
|
Danke Sannaj,
so erklärt versteh ich es sogar. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|