none
IList<myclass> 与 List<myclass> 在使用上有什么区别? RRS feed

  • 问题

  • 小弟一直很疑惑,虽然经常在用,但是一直不明白他们在实际使用中的区别,请大侠指教,谢谢

    开心了就笑,不开心了就过会儿再笑

    2012年7月6日 11:56

答案

  • 小弟一直很疑惑,虽然经常在用,但是一直不明白他们在实际使用中的区别,请大侠指教,谢谢

    开心了就笑,不开心了就过会儿再笑

    IList<T>是接口,接口只是用于定义一个规范(凡是实现接口的必须实现里边的全部方法),这就意味着一旦你使用了IList<T>,那么至于里边的方法如何实现(客户无需知道),只需要调用实现此接口的具体的类就可以了。

    List<T>只是实现了IList的一个具体的类,List<T>可以实例化,IList<T>不能直接使用,必须借助List<T>进行实例化然后使用。


    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月7日 3:35
    版主
  • 要求最抽象的,提供最具体的。

    比如你写一个方法,接受一个集合,返回其中的最大值:

    T GetMax(IList<T> list){...}

    比较好

    如果你写一个计算头N个素数的方法,(用集合或数组)返回出去。如果这个方法内部是用List<int>存储素数的,那么“方法里用什么你就返回什么”:

    List<int> GetFirstNPrimes(int n){...}

    比较好

    关于怎么样把抽象类和具体类用好,可以看看设计模式的书和《.NET框架设计指南》。

    2012年7月7日 14:41

全部回复

  • 小弟一直很疑惑,虽然经常在用,但是一直不明白他们在实际使用中的区别,请大侠指教,谢谢

    开心了就笑,不开心了就过会儿再笑

    IList<T>是接口,接口只是用于定义一个规范(凡是实现接口的必须实现里边的全部方法),这就意味着一旦你使用了IList<T>,那么至于里边的方法如何实现(客户无需知道),只需要调用实现此接口的具体的类就可以了。

    List<T>只是实现了IList的一个具体的类,List<T>可以实例化,IList<T>不能直接使用,必须借助List<T>进行实例化然后使用。


    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年7月7日 3:35
    版主
  • 要求最抽象的,提供最具体的。

    比如你写一个方法,接受一个集合,返回其中的最大值:

    T GetMax(IList<T> list){...}

    比较好

    如果你写一个计算头N个素数的方法,(用集合或数组)返回出去。如果这个方法内部是用List<int>存储素数的,那么“方法里用什么你就返回什么”:

    List<int> GetFirstNPrimes(int n){...}

    比较好

    关于怎么样把抽象类和具体类用好,可以看看设计模式的书和《.NET框架设计指南》。

    2012年7月7日 14:41