Pet*_*Had 4 c# delegates field
我没有得到以下..我一直以为我只能从声明该字段的类访问私有字段.但在这种情况下,我能够访问它:
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?
});
}
}
Run Code Online (Sandbox Code Playgroud)
您只能从其所属的CLASS访问私有数据.同一类的两个对象可以访问彼此的私有部分.
法律:
class c1
{
private int A;
public void test(c1 c)
{
c.A = 5;
}
}
Run Code Online (Sandbox Code Playgroud)
非法:
class c2
{
public void test(c1 c)
{
c.A = 5;
}
}
Run Code Online (Sandbox Code Playgroud)
Session从技术上讲,访问私有变量的不是类A,而是创建的委托函数来SendData()执行此操作。这没有问题。将其视为IterateClients只是从client类中调用方法,该方法可以访问A变量,因为它位于同一个类上。
| 归档时间: |
|
| 查看次数: |
2780 次 |
| 最近记录: |