可从同一类的另一个实例访问的私有字段
我没有得到以下..我一直以为我只能从声明字段的类访问私有字段。但在这种情况下,我能够访问它:
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中也是允许的。