巢狀類型 (C# 程式設計手冊)

類別結構介面內定義的型別稱為巢狀類型。 例如:

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

不論外部類型是類別、介面或結構,巢狀類型都預設為 用;它們只能從其包含的類型存取。 在上述範例中,外部類型無法存取 Nested 類別。

您也可以指定存取修飾詞來定義巢狀型別的存取範圍,如下所示:

下列範例會將 Nested 類別設為 public:

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

巢狀型別或內部類型可存取包含類型或外部類型。 若要存取包含類型,請將它當作引數傳遞至巢狀型別的建構函式。 例如:

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

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

巢狀型別可以存取其包含型別可存取的所有成員。 它可存取包含型別的 private 和 protected 成員,包括任何繼承的 protected 成員。

在先前的宣告,Nested 類別的完整名稱為 Container.Nested。 這是用來建立巢狀類別新執行個體的名稱,如下所示:

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

另請參閱