因此,当可以安全地说发生方法组转换时,我并不真正相信。我们从上一篇文章中得到了这个多播委托:
public partial class MainPage : PhoneApplicationPage
{
public delegate void MyDelegate(int a, int b);
// Constructor
public MainPage()
{
InitializeComponent();
MyDelegate myDel = new MyDelegate(AddNumbers);
myDel += new MyDelegate(MultiplyNumbers);
myDel(10, 20);
}
public void AddNumbers(int x, int y)
{
int sum = x + y;
MessageBox.Show(sum.ToString());
}
public void MultiplyNumbers(int x, int y)
{
int mul = x * y;
MessageBox.Show(mul.ToString());
}
}
我说只有当我们分配了一个重载的方法并且至少一个重载与委托匹配时,才会发生方法组转换。在这种情况下,没有方法组转换。
一位程序员同行说,如果你不认为 MyDelegate myDel = AddNumbers; (名称指问题)是方法组转换,那会是什么呢?
C# 语言规范:存在从方法组(第 7.1 节)到兼容委托类型的隐式转换(第 6.1 节)。给定一个委托类型 D 和一个被归类为方法组的表达式 E,如果 [...]
那么哪种观点是正确的呢?