比如为什么实现了A接口就可以排序?为什么实现了B接口就可以遍历,实现了接口就是实现了接口的方法吧,为什么实现了接口的方法就可以排序了呢?通常我们光继承接口,一般都不实现方法吧,那为什么能排序呢?

解决方案 »

  1.   

    http://topic.csdn.net/u/20081023/20/74bb866e-cb3e-4cc4-a0be-64e80865b032.html我想 LZ 是想问这个问题吧?21楼:new List <string>() 是调用 List <T> 类的构造函数。是调用构造函数,并不是接口。
      

  2.   

    .net 的类库中现有的类,MSDN中如果说它继承了某个接口,就是说它实现了这个接口规定的方法。
      

  3.   

    [SerializableAttribute]
    [ComVisibleAttribute(true)]
    public class ArrayList : IList, ICollection, 
    IEnumerable, ICloneable比如说,MSDN 上说 ArrayList 类继承了 IList 接口,那我们就知道,ArrayList 类一定实现了 IList 接口中规定的所有方法,我们就可以放心对 ArrayList 类型的对象使用 IList 接口中的方法了。
      

  4.   

    如果我们自己写一个类:class MyClass : IList
    {
      // ...
    }那么我们就要在 MyClass 中实现 IList 接口中规定的所有方法,写出相应的代码,否则编译器就会报错。
      

  5.   

    你试一下,下面的程序会报一大堆 CS0535 错误,告诉你必须实现接口 IList 中规定的方法:using System.Collections;class MyClass : IList
    {
      static void Main()
      {
      }
    }
      

  6.   

    using System;// 下面的程序报 CS0535 错误
    class C : IDisposable
    {
    }
    // 下面的程序就没问题:
    class D : IDisposable
    {
      void IDisposable.Dispose() {}
      public void Dispose() {}  static void Main()
      {
        using (D d = new D()) {}
      }
    }
      

  7.   

    我们反过来想吧,如果你来实现遍历功能,需要定义一个遍历功能类(FOREACHCLASS).
    可是我们的操作对象是谁呢?是class1?class2?还是class3?如何才能让我们这个遍历功能类应用到更多的类呢?这时我们想到,其实不管操作的类型是什么,只要保证它具备必要的行为(movenext(将当前枚举指针向后移一位),reset(将指针调到最初位置),GetCurrent(获取当前项)).那我们是不是就可以对它进行遍历了?那如何限定操作对象具备这些行为呢?这就是接口的作用.我们操作的将不在是具体的类型.而是接口就是只包含了限定行为实现的类型.