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
我不确定为什么会收到以下错误消息:
错误 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