可从同一类的另一个实例访问的私有字段
本文关键字:实例 另一个 访问 字段 一类 | 更新日期: 2023-09-27 18:18:14
我没有得到以下内容,我一直认为我只能从声明字段的类中访问私有字段。然而,在这种情况下,我能够访问它:
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?
});
}
}
您只能从它所属的class访问私有数据。同一类的两个对象可以访问彼此的私有部分。
法律:class c1
{
private int A;
public void test(c1 c)
{
c.A = 5;
}
}
非法:class c2
{
public void test(c1 c)
{
c.A = 5;
}
}
应该是这样的
你的理解是错误的;private成员不限于this
限定符
你是对的
我只能从在
中声明字段的类中访问私有字段
表示你访问的是声明私有变量的类的私有字段。
在类client
中有一个方法。在这个方法中,你调用一个类Session
的方法。在这个调用中,您有一个委托(一种"回调"),该委托在类client
的上下文中运行,因此可以访问私有成员A
。
从技术上讲,它不是Session
类访问私有A
变量,它是在SendData()
中创建的委托函数。这没有问题。把它想象成IterateClients
只是从client
类调用方法,该方法可以访问A
变量,因为它在同一个类上。