我不确定为什么会收到以下错误消息:
错误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();
}
这是给我错误的。
答案 0 :(得分:4)
您的班级定义并未说明它实施了IEnumerable<T>
:
class Tilemap<T>: IEnumerable<T>
{
//...
}
答案 1 :(得分:1)
您需要指定该类实现接口:
class Tilemap<T> : IEnumerable