可从同一类的另一个实例访问的私有字段

我没有得到以下..我一直以为我只能从声明字段的类访问私有字段。但在这种情况下,我能够访问它:

class Session { List ListOfClients = new List(); public void IterateClients(Action action) { } } class client { private int A; Session area; public void SendData() { area.IterateClients(delegate(client c) { cA = 5; //how come this is accessible? }); } } 

从技术上讲,它不是访问私有A变量的Session类,它是在SendData()中创建的委托函数。 这没有问题。 可以把它想象成IterateClients只是从client类调用方法,该方法可以访问A变量,因为它在同一个类上。

这就是它应该工作的方式。

你的理解是不正确的; 私人成员不限this限定符。

您只能从它所属的CLASS访问私有数据。 同一类的两个对象可以访问彼此的私有部分。

法律:

 class c1 { private int A; public void test(c1 c) { cA = 5; } } 

非法:

 class c2 { public void test(c1 c) { cA = 5; } } 

你有一个类client内的方法。 在此方法中,您可以调用类Session的方法。 在这个调用中你有一个委托(一种“回调”),这个委托在类client的上下文中运行,因此可以访问私有成员A

你是对的

我只能从声明字段的类访问私有字段

所以你从声明私有变量的类访问私有字段。 这在Java中也是允许的。