İç içe Geçmiş Türler (C# Programlama Kılavuzu)Nested Types (C# Programming Guide)

Bir sınıf veya Yapı içinde tanımlanan bir türe iç içe geçmiş tür denir.A type defined within a class or struct is called a nested type. Örneğin:For example:

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

Dış türün bir sınıf veya yapı olmasından bağımsız olarak, iç içe geçmiş türler varsayılan olarak özeldir; bunlara yalnızca kendi içerilen türden erişilebilir.Regardless of whether the outer type is a class or a struct, nested types default to private; they are accessible only from their containing type. Önceki örnekte, Nested sınıfına dış türler erişilemez.In the previous example, the Nested class is inaccessible to external types.

Ayrıca, iç içe geçmiş bir türün erişilebilirliğini tanımlamak için aşağıdaki gibi bir erişim değiştiricisi belirtebilirsiniz:You can also specify an access modifier to define the accessibility of a nested type, as follows:

Aşağıdaki örnek, Nested sınıfı genel yapar:The following example makes the Nested class public:

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

İç içe geçmiş veya iç, türü kapsayan veya OUTER öğesine erişebilir.The nested, or inner, type can access the containing, or outer, type. Kapsayan türe erişmek için, onu iç içe geçmiş türün oluşturucusuna bağımsız değişken olarak geçirin.To access the containing type, pass it as an argument to the constructor of the nested type. Örneğin:For example:

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

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

İç içe bir tür, kapsayan türü tarafından erişilebilen tüm üyelere erişebilir.A nested type has access to all of the members that are accessible to its containing type. Devralınan korunan üyeler de dahil olmak üzere, kapsayan türün özel ve korumalı üyelerine erişebilir.It can access private and protected members of the containing type, including any inherited protected members.

Önceki bildirimde, sınıfının Nested Container.Nestedtam adı.In the previous declaration, the full name of class Nested is Container.Nested. Bu, aşağıdaki gibi, iç içe yerleştirilmiş sınıfın yeni bir örneğini oluşturmak için kullanılan addır:This is the name used to create a new instance of the nested class, as follows:

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

Ayrıca bkz.See also