建议97:优先考虑将基类型或接口作为参数传递
除了公开及类型或接口外,方法的参数也应该考虑基类型或接口。
以Enumerable类型为例,它的成员方法中只要涉及需要操作集合对象的地方,都要使用IEnumerable泛型接口,比如:
public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count) { if (source == null) { throw Error.ArgumentNull("source"); } return TakeIterator<TSource>(source, count); }
该方法用于获取集合指定数量的一个子集。正是因为存在这个扩展方法。我们才可以对所有的泛型集合进行Take操作。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技