Autor Beitrag
Max064
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Mo 07.03.11 10:43 
Hallo,

ich habe in einem Codebeispiel folgendes gefunden:
ausblenden 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?


Zuletzt bearbeitet von Max064 am Mo 07.03.11 11:01, insgesamt 2-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".