IEnumerator 没有实现接口 IEnumerable

IEnumerator does not implement interface IEnumerable

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

错误 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();
            }

这是给我错误的原因。

您的 class 定义没有说它实现了 IEnumerable<T>:

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

您需要指定class实现接口:

class Tilemap<T> : IEnumerable