C# 快速導覽 - 索引子

類別 (class) 可定義索引子 (indexer) ,使該型態可如陣列 (array) 一般存取,簡單說,就是屬性 (property) 中宣告一個陣列,另外再定義 this 方法 (method) 。



舉例如下
class Demo {
    int[] arr = new int[10];

    int this[int i] {
        get {
            return arr[i];
        }
        
        set {
            arr[i] = value;
        }
    }

    static void Main() {
        Demo d = new Demo();
        int i = 0;
        while (i < 10) {
            d[i] = ++i;
        }
        System.Console.WriteLine(d[1]);
        System.Console.WriteLine(d[2]);
        System.Console.WriteLine(d[3]);
    }
}

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


我們先在 Demo 中宣告建立整數型態的陣列屬性 arr
int[] arr = new int[10];


this 方法中定義 getset
int this[int i] {
    get {
        return arr[i];
    }
        
    set {
        arr[i] = value;
    }
}


這樣一來, Demo 型態的變數就能用陣列方式存取屬性
Demo d = new Demo();
int i = 0;
while (i < 10) {
    d[i] = ++i;
}


編譯執行,結果如下



中英文術語對照
類別class
索引子indexer
陣列array
屬性property
方法method


您可以繼續參考
類別


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


參考資料
Standard ECMA-334 C# Language Specification
msdn: 索引子 (C# 程式設計手冊)

沒有留言: