2017-04-21 1 views
-6

Ich habe gerade bemerkt, dass der folgende Code ohne Fehler kompiliert:Warum kann ich auf private nicht statische Klasseneigenschaften in einer statischen Klassenmethode zugreifen?

public class Foo 
{ 

    private string identifier; 

    public Foo() { } 

    private static void Bar(Foo foo) 
    { 
     Console.WriteLine($"{foo.identifier}"); 
    } 

} 

Da Bar statisch ist, sollte diese eine Ausnahme nicht werfen, dass identifier nicht sichtbar ist?

+7

Warum sollte es? 'identifier' gehört zu der an die Methode übergebenen Instanz. Es ist ein normales Instanzmitglied dieser Instanz. – HimBromBeere

+3

Zugriffsmodifikatoren Steuerelement * Klassen *, nicht * Objekte *. –

+0

Da der Code auf den übergebenen Parameter zugreift, sehe ich nicht, worüber Sie hier verwirrt sind. – DavidG

Antwort

4

Identifikator ist ein Mitglied der Foo ...

foo ein Parameter der statischen Methode Foo.Bar

foo zu einer Instanz

wird

die Instanz durch eine statische Methode zugegriffen bezieht, ist von seine eigene Klasse ...

funktioniert gut

Verwandte Themen