Entwickler-Ecke

C# - Die Sprache - lokale oder doch globale Instanz?!


Max064 - Mo 07.03.11 10:43
Titel: lokale oder doch globale Instanz?!
Hallo,

ich habe in einem Codebeispiel folgendes gefunden:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public class Test
{
     private myClass inst = null;
     private Base design = new Base();

     public void Run()
     {
          myClass inst = design.CreateInstance();
          inst.InstanceLoaded += new myClass.InstanceLoadedEvent(_InstanceLoaded);
     }    
}

Wieso wird inst oben erst global für die Klasse und dann zusätzlich lokal in der member deklariert? Was hat das für Auswirkungen bzw. Motivationen?


jaenicke - Mo 07.03.11 11:00

user profile iconMax064 hat folgendes geschrieben Zum zitierten Posting springen:
Was hat das für Auswirkungen
Dass es nicht funktioniert wie der Quelltext suggeriert. Die eine Variable / Feld hat mit der anderen nichts zu tun, das heißt im privaten Feld steht einfach weiter null.


Max064 - Mo 07.03.11 11:46

Kann ich dann innerhalb der Methode beide Variablen "inst" benutzen? Woher weiß ich dann aber auf welche ich gerade zugreife?


Christian S. - Mo 07.03.11 11:48

Bei einem Namenskonflikt wird im Zweifel die "nähere" Version benutzt, also hier die Variable. Auf das Feld greifst Du dann über this.inst zu.