Does Class need to implement IEnumerable to use Foreach

前端 未结 11 1783
慢半拍i
慢半拍i 2020-12-09 11:04

This is in C#, I have a class that I am using from some else\'s DLL. It does not implement IEnumerable but has 2 methods that pass back a IEnumerator. Is there a way I can u

11条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-09 11:33

    No, you don't and you don't even need an GetEnumerator method, e.g.:

    class Counter
    {
        public IEnumerable Count(int max)
        {
            int i = 0;
            while (i <= max)
            {
                yield return i;
                i++;
            }
            yield break;
        }
    }
    

    which is called this way:

    Counter cnt = new Counter();
    
    foreach (var i in cnt.Count(6))
    {
        Console.WriteLine(i);
    }
    

提交回复
热议问题