Zugriff auf ein nicht statisches Element des äußeren Typs über einen geschachtelten Typ ist nicht möglich

8

Ich habe einen Fehler

  

Zugriff auf ein nicht statisches Element vom äußeren Typ 'Project.Neuro' über   geschachtelter Typ 'Project.Neuro.Net'

mit einem solchen Code (vereinfacht):

%Vor%

Ich kann die problematische Methode in die Neuro.Net-Klasse verschieben, aber ich brauche diese Methode draußen.

Ich bin eine Art objektiver Programmierer Neuling.

Vielen Dank im Voraus.

    
Kamil 01.05.2013, 15:17
quelle

4 Antworten

16

Das Problem ist, dass geschachtelte Klassen keine abgeleiteten Klassen sind, daher werden die Methoden in der äußeren Klasse nicht geerbt .

Einige Optionen sind

  1. Machen Sie die Methode static :

    %Vor%
  2. Verwenden Sie Vererbung statt Verschachtelungsklassen:

    %Vor%
  3. Erstellen Sie eine Instanz von Neuro :

    %Vor%
D Stanley 01.05.2013, 15:23
quelle
2

Sie müssen ein Objekt vom Typ Neuro irgendwo in Ihrem Code instanziieren und OtherMethod darauf aufrufen, da OtherMethod keine statische Methode ist. Ob Sie dieses Objekt innerhalb von SomeMethod erstellen oder es als Argument übergeben, bleibt Ihnen überlassen. Etwas wie:

%Vor%

Alternativ können Sie OtherMethod statisch machen, was es Ihnen erlaubt, sie von SomeMethod wie Sie gerade sind, aufzurufen.

    
vlad 01.05.2013 15:20
quelle
0

Obwohl die Klasse innerhalb einer anderen Klasse verschachtelt ist, ist es immer noch nicht offensichtlich, welche Instanz der äußeren Klasse mit welcher Instanz der inneren Klasse spricht. Ich könnte eine Instanz der inneren Klasse erstellen und sie an die andere Instanz der äußeren Klasse übergeben. Daher benötigen Sie eine bestimmte Instanz, um dieses OtherMethod() aufzurufen.

Sie können die Instanz bei der Erstellung übergeben:

%Vor%     
T.S. 01.05.2013 15:23
quelle
0

Ich denke, das Erstellen einer Instanz der äußeren Klasse in der inneren Klasse ist keine gute Option, da Sie möglicherweise die Geschäftslogik für den äußeren Klassenkonstruktor ausführen. Das Erstellen statischer Methoden oder Eigenschaften ist die bessere Option. Wenn Sie darauf bestehen, eine Instanz der äußeren Klasse zu erstellen, fügen Sie dem äußeren Klassenkonstruktor einen weiteren Parameter hinzu, der keine Geschäftslogik ausführen soll.

    
Tarık Özgün Güner 17.07.2014 12:10
quelle

Tags und Links