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

C# 2.0 新語法特性全解析:泛型、迭代器、匿名方法與部分類別

     編輯:關於C語言

C# 2.0 里程碑:語法糖與型別系統的重大躍升

C# 2.0 (Visual Studio 2005) 引入四大核心特性,極大提升開發效率與型別安全性,奠定現代 C# 程式設計基礎。

1. 匿名方法:內嵌委派的輕量化寫法

語法演進

// C# 1.0 傳統寫法
button.Click += new EventHandler(Button_Click);
void Button_Click(object sender, EventArgs e) { MessageBox.Show("Hi"); }

// C# 2.0 匿名方法
button.Click += delegate { MessageBox.Show("Hi"); };
// 或直接指定方法群組(方法群組轉換)
button.Click += Button_Click;

相容性規則(編譯器隱式轉換)

  • 參數相容:匿名方法無參數時,委派不可有 out 參數;或雙方參數數量、型別、順序完全一致
  • 回傳值相容:委派無回傳值時,匿名方法無 return 或 return;;雙方皆有回傳值時,匿名方法回傳型別可隱式轉換為委派定義型別

捕獲變數:閉包機制

public void Method(bool enabled)
{
    string text = "Hello";
    button.Click += delegate 
    { 
        button.Enabled = enabled;  // 捕獲參數 enabled
        button.Text = text;        // 捕獲區域變數 text
    };
}

區域變數/參數若被匿名方法引用,成為「外部變數/捕獲變數」,生命週期延長至委派被回收為止。編譯器自動生成封裝類別實現閉包。

2. 泛型:型別參數化的革命

文章僅提及請參考 MSDN。核心價值:型別安全的程式碼重用,消除裝箱/拆箱與執行期型別轉換錯誤。List<T>、Dictionary<TKey, TValue> 等集合類別效能大幅提升。

3. 迭代器:yield return 簡化 IEnumerable 實作

傳統痛苦:手動實作 IEnumerator

需建立狀態機類別追蹤位置、實作 MoveNext、Current、Reset,極易出錯。

C# 2.0 優雅解法

public IEnumerator GetEnumerator()
{
    for (int i = 0; i < 10; i++)
        yield return i;  // 產生下一個值,保留執行狀態
}

public IEnumerable MaxToMin(int min, int max)  // 命名迭代器,可帶參數
{
    for (int i = max; i >= min; i--)
        yield return i;
}

public IEnumerable MinToMax  // 迭代器屬性
{
    get { yield return this; }  // this 實作 IEnumerable
}

yield break 宣告迭代結束。編譯器自動生成狀態機類別,開發者專注業務邏輯。

4. 部分類別:大型檔案與團隊協作的利器

[modifiers] partial class MyClass { ... }  // 可分散在多個 .cs 檔案

適用場景:設計師生成碼與手寫碼分離、多人同時修改同一類別、巨大類別模組化拆分。編譯時合併為單一型別。

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