我没有得到以下内容..我一直以为我只能从声明该字段的类访问私有字段。但是在这种情况下我能够访问它:
class Session
{
List<client> ListOfClients = new List<client>();
public void IterateClients(Action<client> action)
{
}
}
class client
{
private int A;
Session area;
public void SendData()
{
area.IterateClients(delegate(client c)
{
c.A = 5; //how come this is accessible?
});
}
}
答案 0 :(得分:5)
这就是它的工作方式。
您的理解不正确;私人成员不仅限于this
限定符。
答案 1 :(得分:5)
您只能从其所属的CLASS访问私人数据。同一类的两个对象可以访问彼此的私有部分。
法律:
class c1
{
private int A;
public void test(c1 c)
{
c.A = 5;
}
}
非法:
class c2
{
public void test(c1 c)
{
c.A = 5;
}
}
答案 2 :(得分:1)
您在班级client
内有一个方法。在此方法中,您可以调用类Session
的方法。在此调用中,您有一个委托(一种“回调”),此委托在类client
的上下文中运行,因此可以访问私有成员A
。
答案 3 :(得分:0)
你是对的
我只能从
中声明字段的类访问私有字段
所以你要从声明私有变量的类中访问私有字段。这在Java中也是允许的。
答案 4 :(得分:0)
从技术上讲,不是Session
类正在访问私有A
变量,它是在SendData()
中创建的委托函数。这没有问题。可以认为它是IterateClients
只是从client
类调用方法,该方法可以访问A
变量,因为它位于同一个类中。