编写高质量代码改善C#程序的157个建议——建议97:优先考虑将基类型或接口作为参数传递

建议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个建议》陆敏技