【发布时间】:2013-10-18 04:33:47
【问题描述】:
我对这个 ICollection 东西很陌生,需要一些关于如何实现 IEnumerable 和 IEnumerator 的指导。我检查了 Microsoft 文档,我想我理解那里所说的(我认为)。但是当我尝试在我的案例中实现它时,我有点困惑,可能需要澄清一下。
基本上,我声明了一个类 T,然后是另一个实现 ICollection 的类 T。在 Ts,我有一本字典。
在主程序中,我想像这样初始化 Ts 类: Ts ts= new Ts(){{a,b}, {c,d}};
所以,我的问题是:
1) 这样做是否合法?看来这是因为编译器没有抱怨,虽然我没有运行测试,因为我没有彻底实现 IEnumerable 和 IEnumerator,这带来了我的第二个问题
2) 如何实现 IEnumerable 和 IEnumerator?
下面是我的伪代码来说明我的观点。
public class T
{
string itemName;
int quantity;
.....
public T(string s, int q)
{
.....
}
}
public class Ts: ICollection
{
private Dictionary<string, T> inventory= new Dictionary<string,T>();
public void Add(string s, int q)
{
inventory.Add(s, new T(s,q));
}
public IEnumerator<T> GetEnumerator()
{
// please help
}
IEnumerator IEnumerable.GetEnumerator()
{
// what is the proper GetEnumerator here
}
...
implement other method in ICollection
}
extract from the main program
public Ts CollectionOfT = new Ts(){{"bicycle",100},{"Lawn mower",50}};
.........
【问题讨论】:
-
为什么要实现自己的 ICollection?如果您想添加自定义功能,为什么不使用现有的内置集合之一(如 List
)甚至从它们派生? -
泛型请...现在是 2013 年 :)
标签: c# icollection