C# 为什么我可以在静态类方法中访问私有的非静态类属性?

C# 为什么我可以在静态类方法中访问私有的非静态类属性?,c#,visibility,C#,Visibility,我刚刚注意到以下代码编译时没有错误: public class Foo { private string identifier; public Foo() { } private static void Bar(Foo foo) { Console.WriteLine($"{foo.identifier}"); } } 既然Bar是静态的,这不应该引发一个异常,即identifier不可见吗?identifier是Foo foo是

我刚刚注意到以下代码编译时没有错误:

public class Foo
{

    private string identifier;

    public Foo() { }

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

}

既然
Bar
是静态的,这不应该引发一个异常,即
identifier
不可见吗?

identifier是Foo

foo是静态方法foo.Bar的一个参数

foo引用一个实例

实例由它自己的类的静态方法访问


工作正常

为什么要这样做<代码>标识符属于传递给方法的实例。它是该实例的普通实例成员。访问修饰符控制类,而不是对象。这不是因为社区“荒谬”。如果你停留在向下箭头上,原因是1)没有研究工作(我看不到任何研究工作)和2)没有用处(这对任何对C#有基本了解的人都没有用处)。这只是一个相当基本的问题,只要你了解这种语言的基本知识,答案就显而易见。@MichaelPittino也许你可以a)解释你认为静态方法不应该访问私有实例成员的原因,B)准确解释你希望我们告诉你的内容。你的问题似乎等于“我猜错了这个关键词的意思。他们在设计语言之前不应该和我核实一下吗?”嗯,也许,我不知道,但在他们设计下一个之前,不要屏住呼吸等待电话。这个社区并不可笑。谷糠比小麦多得多。正如DangerZone所说,这里似乎没有任何研究工作。