代码之家  ›  专栏  ›  技术社区  ›  Kent

“Series2”不包含“GetEnumerator”的定义

  •  1
  • Kent  · 技术社区  · 8 年前

    我肯定遗漏了一些非常明显的东西。这段代码再简单不过了,我不明白为什么会出现这个错误。

    using System.Collections;
    using System.Collections.Generic;
    
    namespace Kent
    {
        public class Series2<T> : IEnumerable<T>
        {
            static void Test()
            {
                Series2<char> s2 = new Series2<char>();
                s2.GetEnumerator();                       //*** compile error here
            }
    
            IEnumerator IEnumerable.GetEnumerator()
            {
                return null;
            }
    
            IEnumerator<T> IEnumerable<T>.GetEnumerator()
            {
                return null;
            }
        }
    }
    

    在指示的行中,我得到以下错误:

    '系列2<字符>'不包含“GetEnumerator()”的定义。。。

    我错过了什么?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Jesse C. Slicer    8 年前

    explicitly implemented the interfaces 因此,只能通过接口实例(或强制转换)访问它们:

            IEnumerable<char> s2 = new Series2<char>();
            s2.GetEnumerator();
    

            IEnumerable s2 = new Series2<char>();
            s2.GetEnumerator();
    

            Series2<char> s2 = new Series2<char>();
            ((IEnumerable<char>)s2).GetEnumerator();
    

    都会奏效的。