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