本文探討泛型類別繼承規則、成員使用型別參數、泛型介面實作與泛型委派應用。
class Base { }
class Derived1 : Base { } // 合法:傳遞型別參數
class Derived2 : Base { } // 合法:具體化型別參數
class Derived3 : Base { } // 合法:重新命名參數
// class Derived4 : Base { } // 非法:未提供型別引數
class Container
{
public T Field; // 欄位
public List Items; // 作為其他泛型型別引數
public Container(T value) => Field = value; // 建構函式
public T Get() => Field; // 方法回傳
public void Set(T value) => Field = value; // 方法參數
}
T **無約束**,成員僅能呼叫 object 定義的成員。where T : IComparable 後,即可呼叫 CompareTo 等介面方法。
interface IList { T[] GetElements(); }
interface IDictionary { void Add(K key, V value); }
class MyList : IList, IDictionary
{
public T[] GetElements() => null; // 實作 IList
public void Add(int key, T value) { } // 實作 IDictionary
}
int)或來自實作類別的參數(如 T)。
delegate bool Predicate(T value);
class Demo
{
static bool IsEven(int i) => i % 2 == 0;
static bool StartsWithA(string s) => s.StartsWith("A");
static void Main()
{
Predicate p1 = IsEven;
Predicate p2 = StartsWithA;
// Lambda 簡寫
Predicate p3 = d => d > 0;
}
}
delegate TResult Func() where T : new() )。泛型類別、介面、委派構成 C# 型別系統的三大支柱。掌握繼承規則、成員約束與實作模式,能設計出高度可復用的元件庫。