class MultipleDispatchCount
{
private static int CountImpl<T>(ICollection<T> collection)
//collection Count = 2
{
return collection.Count;
}
private static int CountImpl(ICollection collection)
//collection {System.Collections.BitArray}
{
return collection.Count;
}
private static int CountImpl(string text)
//text "ABC"
{
return text.Length;
}
private static int CountImpl(IEnumerable collection)
//collection {System.Linq.Enumerable.WhereEnumerableIterator<char>}
{
int count = 0;
foreach (object item in collection)
//item 67'C' 68'D' 69'E' 70'F'
{
count++;
//count 1 2 3 4
}
return count;
}
public static void PrintCount(IEnumerable collectio
深入理解 c# 第十四章 使用动态分发有效地为不同的类型提供计数方法 多重分发
最新推荐文章于 2022-02-15 17:27:54 发布
本文探讨了C#中如何利用动态分发和多重分发来为不同类型的参数提供合适的计数方法。在执行时,C#根据覆盖后方法目标的实际类型进行单一分发,而多重分发则根据实参类型来选择最佳实现。通过一个例子展示了如何在参数为IEnumerable类型时,根据是否为ICollection<T>或ICollection来选择合适的CountImpl重载方法。
摘要由CSDN通过智能技术生成