zoukankan      html  css  js  c++  java
  • ILIST<T>和LIST<T>

    常见问题:

    Ilist <> 本身只是一个泛型接口, 既然是接口当然不能实例化,只能用如下方法
    IList <Class1> IList11 =new List <Class1>();
    但是为什么要这么用呢,为什么不直接用List:
    List <Class1> List11 =new List <Class1>();

    第一种用法有什么好处。

    总结归纳一下:

    Ilist <> 是在 .net2.0里面才支持的

    好处嘛..比如说human和tiger都有行走的功能,你可以把这些归类到interface中,当你有一个动物的类包括有这两种动物时,你想让他们行走你只需要调一个同样的方法而不管对方是什么类型,具体的行走嘛,人有两个只脚,但有4肢,动物有4条腿,这就是到具体的动物类来实现了,但是他们行走时都是4肢摆动,而且都向前迈出一定的距离(当然是向前走时),所以我认为这些可以归类为行为抽象,具体的一步能迈出多远这依赖于每个具体实现的身高/体长.

    使用IList <Class1> IList11 =new List <Class1>();
    方便后期的修改,当你不在使用List 要使用其他类型的时候
    只需要修改这一处地方就可以了
    不用修改过多的地方

     

    IList <>是个接口,定义了一些操作方法这些方法要你自己去实现


    List <>是个类型 已经实现了IList <>定义的那些方法

    List <Class1> List11 =new List <Class1>();
    是想创建一个List <Class1>,而且需要使用到List <T>的功能,进行相关操作。

    IList <Class1> IList11 =new List <Class1>();
    只是想创建一个基于接口IList <Class1>的对象的实例,只是这个接口是由List <T>实现的。所以它只是希望使用到IList <T>接口规定的功能而已。

    接口实现松耦合...有利于系统的维护与重构...优化系统流程...

    鼓励使用接口
    这样可以实现功能和具体实现的分离
    实现接口分离的原则
    不是看实际需要用的

  • 相关阅读:
    PAT 1097. Deduplication on a Linked List (链表)
    PAT 1096. Consecutive Factors
    PAT 1095. Cars on Campus
    PAT 1094. The Largest Generation (层级遍历)
    PAT 1093. Count PAT's
    PAT 1092. To Buy or Not to Buy
    PAT 1091. Acute Stroke (bfs)
    CSS:word-wrap/overflow/transition
    node-webkit中的requirejs报错问题:path must be a string error in Require.js
    script加载之defer和async
  • 原文地址:https://www.cnblogs.com/ceci/p/1587005.html
Copyright © 2011-2022 走看看