C# 4.0 允許在泛型介面/委派的類型參數前加上 out (協變) 或 in (逆變) 修飾詞。
public interface IEnumerable : IEnumerable
{
IEnumerator GetEnumerator();
}
public interface IEnumerator : IEnumerator
{
bool MoveNext();
T Current { get; }
}
意義:T 僅出現在回傳值/屬性 getter,安全轉換:IEnumerable。
public interface IComparer
{
int Compare(T left, T right);
}
意義:T 僅出現在參數位置,安全轉換:IComparer。
| 類型 | 支援項目 |
|---|---|
| 介面 | IEnumerable, IEnumerator, IQueryable, IComparer, IEqualityComparer, IComparable |
| 委派 | Func, Action, Predicate, Comparison, EventHandler |
提供編譯器 API,可動態編譯執行字串程式碼,類似 JavaScript eval。Anders Demo 展示十幾行代碼實現互動式 C# Shell、動態建立 WinForm、按鈕等,媲美 Python/Ruby REPL 體驗。