【发布时间】:2018-04-07 07:21:12
【问题描述】:
我正在编写一个用于学习目的的小游戏,但在使用 foreach 使类可迭代时遇到了麻烦。这是许多游戏对象将实现的类,为它们提供<dynamic> 类型的字符串索引数据存储。我有数组样式访问,所以我可以去object["arbitrary-key"] = foo;,但我希望能够foreach(dynamic value in object)。所以看起来我需要实现 IEnumerable,但是这个接口的 <dynamic> 类型似乎有限制。
Error CS1966 'GameObject': cannot implement a dynamic interface 'IEnumerable<dynamic>'
课程如下:
public class GameObject : IEnumerable<dynamic>
{
public Dictionary<string, dynamic> data = new Dictionary<string, dynamic>();
public GameObject()
{
}
//Overloads the [] operator to allow array style access
public dynamic this[string key]
{
get { return this.data[key]; }
set { data[key] = value; }
}
//Overloads foreach iteration
public IEnumerator<dynamic> GetEnumerator()
{
foreach (dynamic d in data)
{
yield return d;
}
}
IEnumerator<dynamic> IEnumerable<dynamic>.GetEnumerator()
{
return GetEnumerator();
}
}
所以我想我可能是找错了树,需要重新评估这个类。也许我可以让游戏对象实现内置这种行为的东西?还是用其他方式实现我的目标?
【问题讨论】:
标签: c# ienumerable