using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;namespace ddq1
{
    public class DaysOfTheWeek : System.Collections.IEnumerable
    {
        string[] m_Days = { "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat" };        public IEnumerator GetEnumerator()
        {
            for (int i = 0; i < m_Days.Length; i++)
            {
                yield return m_Days[i];
            }
        }
    }    class TestDaysOfTheWeek
    {
        static void Main()
        {
            DaysOfTheWeek week = new DaysOfTheWeek();
            foreach (string day in week)
            {
                System.Console.Write(day + " ");
            }
            Console.Read();
        }
    }}在程序中 public IEnumerator GetEnumerator() 是实现IEnumerable接口, 而我发现在程序中没加 : IEnumerable 接口申明怎么也能编译通过?

解决方案 »

  1.   

    因为这个IEnumerable已经实现了
      

  2.   

    IEnumerable 是接口 ,接口怎么能实现呢?
      

  3.   

    IEnumerator IEnumerable.GetEnumerator()IEnumerable 接口显式接口实现(C# 编程指南)
      

  4.   

    你不实现IEnumerable,就相当于在DaysOfTheWeek这个类定义了一个叫做GetEnumerator的方法,返回值为IEnumerator,而满足foreach的条件,要么是实现IEnumerable接口,要么具有GetEnumerator方法,所以你的程序可以毫无问题的编译并执行