我有這些擴展方法:匹配錯誤的擴展方法
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