Verschachteltes Problem

7

Ich habe gerade versucht, diese einfache Implementierung zu erstellen:

%Vor%

Wenn ich es kompiliere, wird es sich beschweren:

  

Zugriff auf ein nicht statisches Element vom äußeren Typ 'A.Test' über den geschachtelten Typ 'B.Test.TestClass'

nicht möglich

Ich mag die Lösung der Einstellung nicht: static int abc = 0;

Gibt es dafür eine andere Lösung?

    
olidev 22.03.2011, 15:16
quelle

4 Antworten

15

Sie kommen wahrscheinlich von einem Java-Hintergrund, wo dieser Code wie erwartet funktioniert.

In C # sind geschachtelte Typen static (im Sprachgebrauch von Java), d. h. sie sind nicht an eine Instanz der übergeordneten Klasse gebunden. Aus diesem Grund schlägt Ihr Code fehl. Sie müssen eine Instanz der übergeordneten Klasse irgendwie an die untergeordnete Klasse übergeben und auf ihr Mitglied abc zugreifen.

    
Konrad Rudolph 22.03.2011, 15:19
quelle
8

Die innere Klasse benötigt einen Verweis auf eine Instanz der äußeren Klasse:

%Vor%     
dtb 22.03.2011 15:18
quelle
1

Ich sehe nicht, warum TestClass das übergeordnete Test ändern sollte, wenn es sich um eine Instanzklasse handelt.

Vielleicht würde ich ein Beispiel dafür finden:

%Vor%

Verwenden Sie Folgendes:

%Vor%     
gideon 22.03.2011 15:23
quelle
1

Von verschachtelten C # -Klassen sind wie verschachtelte C ++ - Klassen, nicht Java-interne Klassen

  

Wenn Sie eine Klasse darin deklarieren   eine andere Klasse, die innere Klasse noch   verhält sich wie eine normale Klasse. Die Verschachtelung   steuert Zugriff und Sichtbarkeit, aber   nicht Verhalten. Mit anderen Worten, alle   Regeln, die Sie regelmäßig gelernt haben   Klassen gelten auch für verschachtelte Klassen.

     

In Java hat die innere Klasse ein Geheimnis   dieses $ 0 Mitglied, das sich an das erinnert   Instanz der äußeren Klasse, zu der   es war gebunden.

     

Mit anderen Worten, Java innere Klassen sind   syntaktischer Zucker, der nicht verfügbar ist   nach C #. In C # müssen Sie es tun   manuell.

    
Unmesh Kondolikar 22.03.2011 15:30
quelle

Tags und Links