一个方法或者属性都有返回类型,返回后又有什么操作呢?
举个例子吧:
就那foreach循环来说,如果迭代一个集合collectionObject,首先调用collectionObject.GetEnumerator()方法,返回一个IEnumerator接口类型,然后调用IEnumerator接口的MoveNext()方法.如果MoveNext()方法返回的是true,就使用IEnumerator接口的的Current属性,获取对象的一个引用,用于foreach循环,重复前面两步,直到MoveNext()方法返回false为止,循环停止.
   这就是foreach循环的全过程..问
1、为什么返回IEnumerator接口类型会调用MoveNext()方法?
2、接口只有名称,没有实体代码,MoveNext()方法又是在哪实现的?
3、如果返回的是string,int等类型后又有什么操作?怎么才能看到他们有什么操作?
4、返回void后又是什么操作?
5、一个类class Person:IComperable,创建一个集合ArrayList list=new ArrayList();
list.Add(new Person("Jim",30);
为什么list.Sort()方法会调用public int ComparTo(object obj)方法//该方法是IComperable接口的一个方法!!
==============================================================================================

解决方案 »

  1.   

    建议看看msdn 然后写个测试小程序 debug  step by step 查看一下结果
      

  2.   

    1.调用MoveNext()方法将指针移动到下一条记录,如果不调用,永远停在一条记录上,就死循环了
    2.接口的确只有方法签名,但是实现该接口的类里面有该方法的完整实现。也就是实际上调用的是实现了该接口的类里面的方法,你想,接口是不能new的,因此一个new出来的对象如果可以转化成接口,则必然有该接口的方法的实现。
    比如:
             IEnumerable a = new ArrayList();
            IEnumerator b = a.GetEnumerator();
            b.MoveNext();
    MoveNext方法执行的是ArrayList里的实现。
    这就是多态.由抽象来定义方法签名,具体类来实现方法.
    3.4.没看明白,你指的是哪个类返回int string void?
    5.这和2一样。使用每个元素的 System.IComparable 实现对整个 System.Collections.ArrayList 中的元素进行排序。
    同样,只要放入ArrayList中的对象,实现了IComparable接口(也就是说定义了如何比大小的方法,因为比大小的方法是由你来决定的,可以按照字母,按照数字...),也就可以用ArrayList的sort方法,因为排序就是不断在比大小。其实这里反复出现的问题都在于面向对象的三大原则:封装,继承,多态。
      

  3.   

    jeremyyang824 :
      朋友能告诉我,你的邮箱吗?.我很想学C#...可是我好多问题我都不明白,身边又没又会的人...以后我想我有问题可以问问你吗?