الأنواع المتداخلة (دليل البرمجة لـ #C)

النوع الذي يتم تعريفه داخل الفئة أو البنية يسمى نوع متداخل. فعلى سبيل المثال:

class Container
{
    class Nested
    {
        Nested() { }
    }
}

بغض النظر عن ما إذا كانت الأنواع الخارجية عبارة عن فئات أو بنيات، تكو الأنواع المتداخلة افتراضياً private، ولكن يمكن جعلها public أو protected internal أو protected أو internal أو private. في المثال السابق، Nested غير قابل للوصول من الأنواع الخارجية ولكن يمكن جعله عامة مثل هذا:

class Container
{
    public class Nested
    {
        Nested() { }
    }
}

يمكن للنوع المتداخل أو النوع الداخل الوصول إلى النوع المحتوي أو النوع الخارجي. للوصول إلى النوع المحتوي قم بتمريره كدالة إنشائية إلى النوع المتداخل. فعلى سبيل المثال:

public class Container
{
    public class Nested
    {
        private Container parent;

        public Nested()
        {
        }
        public Nested(Container parent)
        {
            this.parent = parent;
        }
    }
}

يمكن للأنواع المتداخلة الوصول إلى الأعضاء المحمية والخاصة من النوع المحتوي بما في ذلك أي أعضاء خاصة أو محمية موروثة.

في التصريح السابق، الاسم الكامل للفئة Nested هو Container.Nested. هذا هو الاسم المستخدم لإنشاء مثيل جديد من الفئة المتداخلة، كما يلي:

Container.Nested nest = new Container.Nested();

راجع أيضًا:

المرجع

الفئات والبنيات (دليل البرمجة لـ #C)

معدلات الاتصال ( ارشادات البرمجة C# )

دالات الإنشاء (دليل البرنامج لـ #C)

المبادئ

دليل البرمجة لـ #C