通用委托重复定义 - 为什么?

Dav*_*ams 4 c# generics delegates

我有两个通用委托,我试图定义编译器抱怨它们是重复的,但在我看来是完全不同的。我在做什么/理解错了?

delegate TReturn foo<TParameter, out TReturn>(TParameter parameter, IItem item);
Run Code Online (Sandbox Code Playgroud)

delegate TReturn foo<TParameter, out TReturn>(TParameter parameter, int field, IItem item);
Run Code Online (Sandbox Code Playgroud)

如果我向第二个委托添加一个新的通用参数,则一切正常。

delegate TReturn foo<TParameter, TField, out TReturn>(TParameter parameter, TField field, IItem item) where TField struct
Run Code Online (Sandbox Code Playgroud)

但这似乎并不正确。我将始终为字段传递一个 int - 它不应该是一个泛型。

Kev*_*mey 5

委托不是方法。它们知道如何调用方法,但它们本身不是方法(委托是object),因此不能像方法一样重载。

有关为什么不可能的解释,请参阅此帖子