在 C# 中,所有委托类型都相互不兼容,即使它们具有相同的签名。举个例子:
delegate void D1();
delegate void D2();
D1 d1 = MethodGroup;
D2 d2 = d1; // compile time error
D2 d2 = new D2 (d1); // you need to do this instead
这种行为和语言设计决策背后的原因是什么。