我有这些扩展方法:匹配错误的扩展方法
public static void Replace<T>(this IList list, T newItem)
public static void Replace<T>(this IList<T> list, IEnumerable newItems)
public static void Replace<T>(this IList<T> list, IEnumerable<T> newItems)
我有产生IList<IWell>
叫,井LINQ的声明。 (我在运行时井是IEnumerable<IWell>
确认。)
然而,该声明
SelectedValues.Replace(wells);
总是命中第一个扩展方法,而不是第二或第三。 (我在运行时确认SelectedValues是IList<IWell>
。)
是否显而易见我在做什么错?
SelectedValues被声明为IList。 – 2011-01-31 20:18:56
@凯利:那么你的答案就在那里。由于它被声明为'IList`类型,唯一的候选扩展方法是`public static void Replace(this IList list,T newItem)``。其他两个甚至从来没有被编译器考虑过。我会在编辑中详细说明一下。 –
jason
2011-01-31 20:23:10