声明方法的参数类型时,应尽量指定最弱的类型,宁愿要接口也不要基类。例如,如果要写方法来处理一组数据项,最好是用接口(比如:IEnumerable<T>)声明参数,而不要用强数据类型(比如list《T》)或者更强的接口类型(比如ICollection《T》或者IList《T》)。
因为如果参数为弱类型,只要是实现了IEnumerable<T>接口的都可以作为实参传递进来,但是如果指定的参数类型比较具体,比如List<T> 那就只能传递该类型的参数了。其他的都不行。