そのため、メソッド グループの変換が発生したと言っても過言ではありません。以前の投稿からこのマルチキャスト デリゲートがあります。
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());
}
}
メソッド グループの変換は、オーバーロードされたメソッドを割り当て、少なくとも 1 つのオーバーロードがデリゲートと一致する場合にのみ発生します。この場合、メソッド グループの変換はありません。
仲間のプログラマーは、MyDelegate myDel = AddNumbers; (質問を参照する名前で)はメソッドグループの変換ですが、それは何ですか?
C# 言語仕様: メソッド グループ (§7.1) から互換性のあるデリゲート型への暗黙的な変換 (§6.1) が存在します。デリゲート型 D と、メソッド グループとして分類される式 E が与えられた場合、E から D への暗黙的な変換が存在する場合 [...]
では、どの観点が正しいのでしょうか。