دسترسی به اعضای خصوصی کلاس

امروز موقع نوشتن کد با سی شارپ به مطلب جالبی برخوردم که تا حالا متوجهش نشده بودم. شاید به خاطر غیرطبیعی بودنش به نظرم نرسیده بود و ازش استفاده نکرده بودم. اینکه میشه به اعضای خصوصی یک کلاس به کمک یک نمونه از آن کلاس دسترسی داشت ، به شرط آینکه نمونه ی کلاس در خود کلاس ساخته شده باشه !

یعنی مثلا اگر در کلاس A یک نمونه به اسم a از خودش رو بسازید میتونید از طریق a به اعضای خصوصی آن هم دسترسی داشته باشید. این ویژگی در C++ هم وجود داره. برای مثالی :

[C#]
    class MyClass
    {
        private void method1()
        {
            MyClass mc = new MyClass();
            mc.method1();
        }
    }
---------------------------------------------------------------
[C++]

class MyClass
{
private:
int a;

void Test()
{
MyClass m();
m.Test();
m.a = 5;
}
};



که با موفقیت کامپایل میشه.
در عین حال که عجیب به نظر میرسه و طبیعی هم هست !