1

今天我正在研究代表。我读到委托的签名和方法签名应该完全匹配。

我从这个网站上读到了这个

http://www.aspdotnet-suresh.com/2013/09/C-Sharp-delegates-example-use-of-delegates-in-C-Sharp.html

但是当我去 MSDN 时,我在那里读到了这个声明

方法不必完全匹配委托签名。有关详细信息,请参阅在委托中使用差异(C# 和 Visual Basic)。

这是这篇文章的链接

http://msdn.microsoft.com/en-us/library/ms173171%28v=vs.110%29.aspx

现在我很困惑请告诉我关于代表的哪一个是正确的,并且两篇文章都已更新

4

2 回答 2

2

除非你有充分的理由不相信微软对自己的创作所说的话,否则我建议相信 MSDN 文章而不是爱好者在他们的博客上所说的话。

于 2013-11-06T13:01:16.863 回答
1

正如MSDN 文档所说,它是关于协变逆变的。

MSDN 上的一个例子很清楚,阅读代码注释:

// Event hander that accepts a parameter of the EventArgs type. 
private void MultiHandler(object sender, System.EventArgs e)
{
    label1.Text = System.DateTime.Now.ToString();
}

public Form1()
{
    InitializeComponent();

    // You can use a method that has an EventArgs parameter, 
    // although the event expects the KeyEventArgs parameter. 
    this.button1.KeyDown += this.MultiHandler;

    // You can use the same method  
    // for an event that expects the MouseEventArgs parameter. 
    this.button1.MouseClick += this.MultiHandler;
}
于 2013-11-06T13:02:53.587 回答