首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 索引器進階應用(一):簡化類型資訊存取的基本語法與優勢

     編輯:關於C語言

前言

C# 索引器讓類別實例像陣列一樣以 obj[index] 存取內部資料,隱藏具體方法名稱,提升程式碼可讀性。本文為系列第一篇,對比傳統方法與索引器語法,闡述核心優勢。

傳統方法 vs 索引器


// 傳統方法
public class DataAccess
{
    private Dictionary _data = new();
    public string GetData(int id) => _data.TryGetValue(id, out var v) ? v : null;
    public void SetData(int id, string value) => _data[id] = value;
}

// 使用者程式碼
var da = new DataAccess();
string val = da.GetData(10);   // 需記住方法名
da.SetData(10, "Hello");

// 索引器版本
public class DataAccess
{
    private Dictionary _data = new();
    public string this[int id]
    {
        get => _data.TryGetValue(id, out var v) ? v : null;
        set => _data[id] = value;
    }
}

// 使用者程式碼
var da = new DataAccess();
string val = da[10];           // 直觀如陣列
da[10] = "Hello";

索引器核心優勢

  1. 語法糖:obj[i] 編譯為 get_Item(i)/set_Item(i, value),無執行期開銷。
  2. 介面統一:實作 IList、IDictionary 等標準介面時,索引器是必要成員。
  3. 可發現性:IntelliSense 直接顯示索引器參數,無需瀏覽方法列表。
  4. 多載支援:同一類別可定義多個參數型別不同的索引器(見後續文章)。
  5. 屬性語法相容:可加上 virtual、override、interface 實作。

基本語法規則


public class MyClass
{
    // 單一參數
    public T this[int index] { get; set; }

    // 多參數
    public T this[int x, int y] { get; set; }

    // 唯讀
    public T this[string key] { get; }

    // 介面顯式實作
    string IList.this[int index] { get => ...; set => ...; }
}

結語

索引器是 C# 型別系統的重要表達力擴充。掌握基本語法後,後續文章將探討多維資料、複合鍵、多重檢索路徑、委派策略等進階應用模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved