【发布时间】:2016-07-02 03:35:35
【问题描述】:
我写了一个实现IEnumerable<T>的泛型类:
public class EnumerableObject<T> : IEnumerable<T>
{
IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
...
}
public IEnumerator GetEnumerator()
{
...
}
}
所以我可以用foreach 迭代这个类的对象,但是如果我改变foreach 变量的类型,编译器不会给我一个错误,我可以编写这段代码而不会出现编译器错误:
foreach (string item in new EnumerableObject<int>())
{
....
}
但是如果我遍历一个通用列表,我会得到一个编译器错误:
foreach (string item in new List<int>())
{
...
}
无法将类型“int”转换为“string”
我认为List<T> 类条件就像我的类 EnumerableObject 但为什么在我的情况下没有出现编译器错误?
【问题讨论】:
-
您正在尝试使用字符串迭代 int。那永远行不通。为什么要使用字符串?
-
@CathalMF,如果我完整阅读了问题,我会尝试模拟一个冲突的情况来澄清问题。
标签: c# foreach ienumerable