IEnumerator没有实现接口IEnumerable

时间:2017-11-20 22:43:58

标签: c# ienumerator

我不确定为什么会收到以下错误消息:

错误CS0540'Tilemap.IEnumerable.GetEnumerator()':包含类型没有实现接口'IEnumerable' enter image description here

这是我的代码:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TileMapper
{
    class Tilemap<T>
    {

        //Tilemap implementation
        private readonly T[,] tilemap;

        public int Width { get; }
        public int Height { get; }

        public Tilemap(int width, int height)
        {
            this.Width = width;
            this.Height = height;
            this.tilemap = new T[width, height];
        }

        public T this[int x, int y]
        {
            get { return this.tilemap[x, y]; }
            set { this.tilemap[x, y] = value; }
        }

        //Tilemap as collection
        public int Count => this.Width * this.Height;

        public IEnumerator<T> GetEnumerator()
        {
            for (int y = 0; y < this.Height; y++)
            {
                for (int x = 0; x < this.Width; x++)
                {
                    yield return this[x, y];
                }
            }
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return this.GetEnumerator();
        }

    }
}

我搜索过类似的错误,但大多数只是引用添加

 IEnumerator IEnumerable.GetEnumerator()
            {
                return this.GetEnumerator();
            }

这是给我错误的。

2 个答案:

答案 0 :(得分:4)

您的班级定义并未说明它实施了IEnumerable<T>

class Tilemap<T>: IEnumerable<T>
{
     //...
}

答案 1 :(得分:1)

您需要指定该类实现接口:

class Tilemap<T> : IEnumerable