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

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)

Sam*_*man 6

您只能从其所属的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)


SLa*_*aks 5

这就是它的工作方式.

你的理解是不正确的; 私人成员不限于this资格者.


Jar*_*rek 0

Session从技术上讲,访问私有变量的不是类A,而是创建的委托函数来SendData()执行此操作。这没有问题。将其视为IterateClients只是从client类中调用方法,该方法可以访问A变量,因为它位于同一个类上。