框架设计(第2版)CLR Via C#(1)
8.8声明方法的参数类型
总结起来两点:一、参数类型应尽可能指定最弱类型,并且最好在基类上定义接口--相对于在C#中使用接口体系设计系统结构;
public void ManipulateItems<T>(IEnumerable<T> collection){...}
//而不要采用
亦可以使用基类体系,比如C++这种没有单独的接口概念定义的。
public void ProcessBytes(Stream someStream){...}
//而不要采用
public void ProcessBytes(FileStream fileStream){...}
//而不要采用
public void ProcessBytes(FileStream fileStream){...}
二、返回类型应尽可能指定最强类型
public IList<String> GetStringCollection(){...}
//而不要
public List<String> GetStringCollection(){...}
//而不要
public List<String> GetStringCollection(){...}
public FileStream OpenFile(){...}
//而不要
public Stream OpenFile(){...}
//而不要
public Stream OpenFile(){...}