C# IEnumerable接口导致列表出错
我应该调整我的C# IEnumerable接口导致列表出错,c#,list,ienumerable,C#,List,Ienumerable,我应该调整我的InvItems类以使用IEnumerable接口,但不使用IEnumerable接口。然而,当我调整类时,我的列表会弹出错误,我不明白为什么 错误是: “找不到类型或命名空间。” 我想我必须转换列表,但我不太确定如何转换(我只找到了使用IEnumerable界面的说明)。谢谢您的帮助 public class InvItemList : IEnumerable { private List<InvItem> invItems; public InvI
InvItems
类以使用IEnumerable
接口,但不使用IEnumerable
接口。然而,当我调整类时,我的列表会弹出错误,我不明白为什么
错误是:
“找不到类型或命名空间。”
我想我必须转换列表,但我不太确定如何转换(我只找到了使用IEnumerable
界面的说明)。谢谢您的帮助
public class InvItemList : IEnumerable
{
private List<InvItem> invItems;
public InvItemList()
{
invItems = new List<InvItem>();
}
public IEnumerator GetEnumerator()
{
foreach (InvItem in invItems)
{
yield return frmNewItem;
}
}
public类InvItemList:IEnumerable
{
私人名单;
公共受邀者()
{
invItems=新列表();
}
公共IEnumerator GetEnumerator()
{
foreach(InvItem中的InvItem)
{
收益率frmNewItem;
}
}
您必须导入System.Collection
,以删除找不到命名空间的错误
>p>您可能应该考虑使用泛型<代码> iQueaby接口,而不是非泛型<代码> iQueabd 。
下面是您的代码修复程序,以使其能够编译:
public class InvItemList : IEnumerable
{
private List<InvItem> invItems;
public InvItemList()
{
invItems = new List<InvItem>();
}
IEnumerator IEnumerable.GetEnumerator()
{
return invItems.GetEnumerator();
}
}
您需要更正一些错误:
加:
更正“foreach”语句:
foreach (InvItem frmNewItem in invItems)
所以它看起来是这样的:
using System.Collections;
public class InvItem
{
}
public class InvItemList : IEnumerable
{
private List<InvItem> invItems;
public InvItemList()
{
invItems = new List<InvItem>();
}
public IEnumerator GetEnumerator()
{
foreach (InvItem frmNewItem in invItems)
{
yield return frmNewItem;
}
}
}
使用系统集合;
公开课
{
}
公共类InvItemList:IEnumerable
{
私人名单;
公共受邀者()
{
invItems=新列表();
}
公共IEnumerator GetEnumerator()
{
foreach(InvItem frmNewItem in invItems)
{
收益率frmNewItem;
}
}
}
IEnumerable
的命名空间是System.Collections
,而IEnumerable
的命名空间是System.Collections.Generic
确保引用的是正确的。如果我同时使用System.Collections和System.Collections.Generic,然后在使用
public class InvItemList : System.Collections.IEnumerable
错误解决。1.什么异常2.什么是
frmNewItem
?什么是frmNewItem
?使用类的表单。我有一个InvItem类、InvItemList类和一个新的项目表单。@MarcinJuraszek感谢添加转义字符。嗯,这也是我的想法;我是否使用了您可以看到的错误的表单?使用系统;使用System.Collections;使用System.Linq;使用System.Text;使用System.Threading.Tasks;命名空间清单维护{public class InvItemList:IEnumerable{private List invItems;public InvItemList(){invItems=new List();如果要使用列表
,则必须添加命名空间引用System.Collection.Generic
。因此正确的引用顺序可能是:使用System;使用System.Collections;使用System.Collections.Generic;使用System.Linq;使用System.Text;使用System.Threading.Tasks;
或者您可以在中定义InvestMList这样:public class InvItemList:System.Collections.IEnumerable
那么就永远不会有任何错误引用。啊哈,如果我同时输入System.Collections和System.Collections.Generic,然后定义我在类中使用的IEnumerable,这就解决了错误!非常感谢!使用您的foreach,我得到了一个“检测不到的代码”错误。我的InvItem类是公共的;研究它,错误似乎是指循环错误地中断。但这怎么可能?它在哪一行显示错误?如果您逐字复制上述代码,我怀疑foreach中没有。尽管现在的类不是很有用。您正在创建一个空列表实例作为私有成员字段,并且没有向其中添加任何项的代码。
using System.Collections;
public class InvItem
{
}
public class InvItemList : IEnumerable
{
private List<InvItem> invItems;
public InvItemList()
{
invItems = new List<InvItem>();
}
public IEnumerator GetEnumerator()
{
foreach (InvItem frmNewItem in invItems)
{
yield return frmNewItem;
}
}
}
public class InvItemList : System.Collections.IEnumerable