答案 0 :(得分:4)
这里的重载是以委婉的方式使用的。
它实际告诉你的是,有16种类型,它们都恰好是委托类型,并且都具有相同的名称。他们采用不同数量的通用参数这一事实意味着这些类型之间没有实际关系。
正在使用重载术语,因为委托类型通常用于它们类似于方法的上下文中, if 它们是方法而不是委托(并且属于相同的包含类型)它们将是过载。
答案 1 :(得分:3)
您不能拥有包含更多重载的单个委托类型。但是,您可以使用多个具有相同名称但具有不同数量的通用参数的委托类型,例如Func
和Action
。
这对于方法重载是不同的,重载可以指定具有不同类型的相同数量的参数,多个委托类型必须具有不同数量的通用参数才有效
所以这是无效的
delegate void A();
delegate void A(int d);
但这是有效的:
delegate void A();
delegate void A<T>(T d);
同样具有相同名称的不同委托类型不兼容,它们本质上是不同的类型,恰好会共享一个名称。