zoukankan      html  css  js  c++  java
  • ILIST类型的使用问题(收集) dodo

    比如在Category.cs中,
    //获取所有宠物种类
    public IList<CategoryInfo> GetCategories()
    //按id号获取单个宠物种类
    public CategoryInfo GetCategory(string categoryId)
    第一个方法返回的是实体 CategoryInfo的集合,为什么用的是IList<CategoryInfo>,而不是List<CategoryInfo>呢?
    回复人:ristona(一箭) ( 二级(初级)) 信誉:98 2007-3-9 21:40:26 得分:0
    ?

    这是考虑开发可复用性代码,叫做依赖倒转原则。
    Top
    回复人:syeerzy(快乐永远*先天下之乐而乐*后天下之忧而忧*) ( 两星(中级)) 信誉:95 2007-3-9 22:54:45 得分:0
    ?

    面向接口编程。

    如果.Net 3.0或4.0,5.0里面,List可能产生一些变化,但是IList却不太可能变化(因为只是个接口,实现又不在这里,变化个接口意义不太大,就算这个接口不合理也是新加一个接口不会去改接口的),这只是一个简单的例子而已。

    返回一个IList给了使用上更多灵活性,这个才是更重要的。
    Top
    回复人:sp1234(遭遇 Adware.CPush 流氓) ( 四星(高级)) 信誉:98 2007-3-9 22:57:06 得分:0
    ?

    基本上,IList<T>与List<T>类型的接口功能是完全一样的。

    .net不支持多重继承。那么使用IList<T>就能够适应更多的类型,包括不是从List<T>继承的类型。

    不过,实际上使用Interface编程是非常令人痛苦的。因此,一般人返回一个这种集合的时候十有八九会从List<T>继承,而不会让自定义的集合仅实现IList<T>。好在List<T>也是IList<T>,所以使用IList<T>完全可以隐藏这种乱七八糟的选择。

    综合起来看,IList<T>很难用,但是灵活。
    Top
    回复人:Ivony(授人以鱼不如授人以渔,上海谋生) ( 两星(中级)) 信誉:100 2007-3-11 6:49:59 得分:0
    ?

    我觉得是最小使用原则,如果接受者并不需要具体的容器,而只需要一个可以被当作容器的“东西”,这个时候就不必返回一个具体的容器。

    另一个方面也是从语义上来说,IList强调我返回一个容器,List强调我返回一个特定的容器。

    面向接口编程不能生搬硬套,要不然也会很痛苦。


    最后说明ArrayList和LinkedList等都实现了IList的接口
    你可以声明一个IList类型的变量,使之指向ArrayList或者LinkedList
    IList list = new ArrayList();
    IList list = new LinkedList();
  • 相关阅读:
    DVWA之CSRF(跨站请求伪造攻击)
    C++多线程同步技巧(二) ---事件
    DVWA之Command injection(命令执行漏洞)
    DVWA之Command injection(命令执行漏洞)
    DVWA之File Inclusion(文件包含)
    DVWA之File Inclusion(文件包含)
    Linux服务器安全加固
    DVWA之File Upload (文件上传漏洞)
    DVWA之File Upload (文件上传漏洞)
    文件上传漏洞
  • 原文地址:https://www.cnblogs.com/zgqys1980/p/876043.html
Copyright © 2011-2022 走看看