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

delegate TReturn foo<TParameter, out TReturn>(TParameter parameter, IItem item);




delegate TReturn foo<TParameter, out TReturn>(TParameter parameter, int field, IItem item);


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

delegate TReturn foo<TParameter, TField, out TReturn>(TParameter parameter, TField field, IItem item) where TField struct


但这似乎是不正确的。我将永远为字段传递一个int值-它不应该是通用的。

最佳答案

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

有关为何无法实现的说明,请参见this post

08-04 15:09