本帖最后由 ksly2008 于 2015-01-08 12:19:59 编辑

解决方案 »

  1.   

    那是Linq语法,在System.Linq.Enumerable类中定义的扩展方法,原型时
    public static TSource First<TSource>(this IEnumerable<TSource> source);
    并不是IEnumerable中定义的方法,其实你可以在VS中,按F12转到方法的定义就知道了
    扩展方法你查下资料
      

  2.   

    接口作为返回值,使得方法具有一定的灵活性。
    比如接口
    interface IPerson

    class Male:IPerson{}
    class Femal:IPerson{}方法返回的时候可以返回Male对象,也可以返回Female对象,这样就你无需根据男人还是女人定义两个方法了。
      

  3.   

    我也看到了element.First();是去调用了System.Linq.Enumerable类中的first方法,但element是IEnumerable<XElement> 接口类型,它为什么可以去调用Enumerable这个类的方法呢?
      

  4.   

    IEnumerable<>是IEnumerable的泛型实现
      

  5.   

    上述我列出这个代码,什么地方看出来这个接口被引用到了类上?
    IEnumerable<T>继承IEnumerable接口
    IEnumerable:公开枚举数,该枚举数支持在非泛型集合上进行简单迭代(比如foreach遍历)XElement xe = XElement.Load(xmlFilePath);
             IEnumerable<XElement> element = from item in xe.Descendants("ThemeName")
                                             select item; 
    element的值是XElement集合(具体的类对象)
      

  6.   

    只是规定了返回值的类型要实现接口,element本身就只是个实例。最后一句调用的可以是类型实现接口的方法,也可以是类型本身的方法。