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

C# 4.0 新特性總覽(四):協變與逆變

     編輯:關於C語言

泛型介面與委派的 in/out 關鍵字

C# 4.0 允許在泛型介面/委派的類型參數前加上 out (協變) 或 in (逆變) 修飾詞。

out (協變 Covariance) —— 只作為輸出


public interface IEnumerable : IEnumerable
{
    IEnumerator GetEnumerator();
}
public interface IEnumerator : IEnumerator
{
    bool MoveNext();
    T Current { get; }
}

意義:T 僅出現在回傳值/屬性 getter,安全轉換:IEnumerable → IEnumerable。

in (逆變 Contravariance) —— 只作為輸入


public interface IComparer
{
    int Compare(T left, T right);
}

意義:T 僅出現在參數位置,安全轉換:IComparer → IComparer。

.NET 4.0 內建支援協變/逆變的介面與委派

類型支援項目
介面IEnumerable, IEnumerator, IQueryable, IComparer, IEqualityComparer, IComparable
委派Func, Action, Predicate, Comparison, EventHandler

Compiler as a Service

提供編譯器 API,可動態編譯執行字串程式碼,類似 JavaScript eval。Anders Demo 展示十幾行代碼實現互動式 C# Shell、動態建立 WinForm、按鈕等,媲美 Python/Ruby REPL 體驗。

參考資源

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