Dan*_*nny 22 c# public definition enumerator
我正在使用C#构建的Windows窗体应用程序出现问题.该错误表明"foreach语句不能对'CarBootSale.CarBootSaleList'类型的变量进行操作,因为'CarBootSale.CarBootSaleList'不包含'GetEnumerator'的公共定义".
我似乎无法理解造成这种情况的原因.
这是抛出错误的代码:
List<CarBootSaleList> Sortcarboot = new List<CarBootSaleList>();
foreach (CarBootSale c in carBootSaleList)
{
if (c.Charity == "N/A")
{
Sortcarboot.Add(carBootSaleList);
textReportGenerator.GenerateAllReport(Sortcarboot, AppData.CHARITY);
}
}
Run Code Online (Sandbox Code Playgroud)
这是CarBootSaleList类,它说没有GetEnumerator定义:
public class CarBootSaleList
{
private List<CarBootSale> carbootsales;
public CarBootSaleList()
{
carbootsales = new List<CarBootSale>();
}
public bool AddCarBootSale(CarBootSale carbootsale)
{
bool success = true;
foreach (CarBootSale cbs in carbootsales)
{
if (cbs.ID == carbootsale.ID)
{
success = false;
}
}
if (success)
{
carbootsales.Add(carbootsale);
}
return success;
}
public void DeleteCarBootSale(CarBootSale carbootsale)
{
carbootsales.Remove(carbootsale);
}
public int GetListSize()
{
return carbootsales.Count();
}
public List<CarBootSale> ReturnList()
{
return carbootsales;
}
public string Display()
{
string msg = "";
foreach (CarBootSale cbs in carbootsales)
{
msg += String.Format("{0} {1}", cbs.ID, cbs.Location, cbs.Date);
msg += Environment.NewLine;
}
return msg;
}
Run Code Online (Sandbox Code Playgroud)
Gui*_*ish 22
你的CarBootSaleList班级不是名单.它是一个包含列表的类.
你有三个选择:
让你的CarBootSaleList对象实现IEnumerable
要么
让你的CarBootSaleList继承自 List<CarBootSale>
要么
如果你很懒,这几乎可以做同样的事情而无需额外的编码
List<List<CarBootSale>>
Run Code Online (Sandbox Code Playgroud)
pes*_*ino 15
你没有告诉我们声明carBootSaleList.但是从异常消息中我可以看到它是类型的CarBootSaleList.此类型不实现IEnumerable接口,因此不能在foreach中使用.
你的CarBootSaleList班级应该实施IEnumerable<CarBootSale>:
public class CarBootSaleList : IEnumerable<CarBootSale>
{
private List<CarBootSale> carbootsales;
...
public IEnumerator<CarBootSale> GetEnumerator()
{
return carbootsales.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return carbootsales.GetEnumerator();
}
}
Run Code Online (Sandbox Code Playgroud)
您应该实现 IEnumerable 接口(CarBootSaleList 应该在您的情况下实现它)。
http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.getenumerator.aspx
但子类化 System.Collections.ObjectModel.Collection 和朋友通常更容易
http://msdn.microsoft.com/en-us/library/system.collections.objectmodel.aspx
你的代码也看起来有点奇怪,就像你在嵌套列表一样?
| 归档时间: |
|
| 查看次数: |
128058 次 |
| 最近记录: |