C# 快速導覽 - 巢狀類別

類別 (class) 中也可以定義類別,這樣的類別就是巢狀類別。



舉例如下
class Demo {
    int a;
    int b;
    
    Demo() {
        a = 11;
        b = 22;
    }
    
    public class Demo2 {
        public Demo p;
        
        public Demo2() {
            this.p = null;
        }
        
        public Demo2(Demo p) {
            this.p = p;
        }
        
        public void DoSomething() {
            System.Console.WriteLine(p.a + p.b);
        }
        
        public void DoSomething2() {
            System.Console.WriteLine("Free your mind.");
        }
    }
    
    public void DoSomething() {
        Demo2 d = new Demo2();
        d.DoSomething2();
    }
    
    static void Main() {
        Demo d1 = new Demo();
        d1.DoSomething();
        Demo.Demo2 d2 = new Demo.Demo2(d1);
        d2.DoSomething();
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:class11.cs
    功能:示範 C# 程式 
    作者:張凱慶
    時間:西元 2013 年 6 月 */


編譯執行,結果如下



上例的 Demo2 為巢狀類別,在 Demo 中可直接建立使用 Demo2 ,而在 Demo2 中若要使用 Demo 的成員,就要將 Demo 宣告為屬性 (property) ,並在建構子 (constructor) 中以參數 (parameter) 形式傳入。


中英文術語對照
類別class
屬性property
建構子constructor
參數parameter


您可以繼續參考
類別


相關目錄
回 C# 快速導覽
回 C# 教材
回首頁


參考資料
Standard ECMA-334 C# Language Specification
msdn: 巢狀型別 (C# 程式設計手冊)

沒有留言: