实现IEnumberable接口

JAX*_*JAX 0 c# interface

我知道IEnumerable是一个接口,我也知道当一个类实现一个接口时,它必须为该接口中的方法实现特定的主体.最近我一直在写一个程序,我觉得我需要实现IEnumerable上我的课之一,以允许它在foreach循环使用.我这样做后这样做:

class FData: IEnumerable<EClass> {

    // Removed the irrelevant contents
    public IEnumerator<EnumerableClass> GetEnumerator()
    {       
        for (int i = 0; i < Emp_Id.Count; i++) {
            yield return (new EnumerableClass { Emp_Id = Emp_Id[i], Salary = Salary[i] });
        }
    }
    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return this.GetEnumerator();
    }
} 
Run Code Online (Sandbox Code Playgroud)

我看到我的FData类可以像List一样使用,就好像它继承了所有可枚举的方法,如Select(),All(),Any()等.

我想知道如果在接口中没有定义这些方法的行为,这究竟是怎么发生的?

Chr*_*tos 7

所有这些方法都是extension实现IEnumerable接口的类型的方法.因此,一旦类型实现IEnumerable了方法,这些方法 - 除了方法之外,已经在类型的主体内定义了.

有关进一步的文档,请看这里.另外,如果您之前没有听过extension方法,请先看看这里.