逆變[C#中的委託逆變]

逆變,因為委託方法簽名參數比方法參數更具體,因此可以在傳遞給處理程式方法時對它們進行隱式轉換。這樣,當創建可由大量類使用的更加通用的委託方法時,使用逆變就更為簡單了。

當委託方法簽名具有一個或多個參數,並且這些參數的類型派生自方法參數的類型時,就稱為逆變委託方法。因為委託方法簽名參數比方法參數更具體,因此可以在傳遞給處理程式方法時對它們進行隱式轉換。這樣,當創建可由大量類使用的更加通用的委託方法時,使用逆變就更為簡單了。

例如,如果方法具有兩個參數,則委託的第一個參數必須繼承於方法的第一個參數的類,且第二個參數必須繼承於第二個參數的類。(委託類型的參數比委託方法的參數更具體) 。

C# 代碼示例

System.DateTime lastActivity;

public Form1()

{

InitializeComponent();

lastActivity = new System.DateTime();

this.textBox1.KeyDown += this.MultiHandler; //works with KeyEventArgs

this.button1.MouseClick += this.MultiHandler; //works with MouseEventArgs

}

// Event hander for any event with an EventArgs or

// derived class in the second parameter

private void MultiHandler(object sender, System.EventArgs e)

{

lastActivity = System.DateTime.Now;

}

相關詞條

熱門詞條

聯絡我們