我在C#中构建的Windows Form应用程序有问题。该错误表明“foreach语句无法对'CarBootSale.CarBootSaleList'类型的变量进行操作,因为'CarBootSale.CarBootSaleList'不包含'GetEnumerator'的公共(public)定义”。

我似乎不明白是什么原因造成的。

这是引发错误的代码:

        List<CarBootSaleList> Sortcarboot = new List<CarBootSaleList>();

        foreach (CarBootSale c in carBootSaleList)
        {
            if (c.Charity == "N/A")
            {
                Sortcarboot.Add(carBootSaleList);
                textReportGenerator.GenerateAllReport(Sortcarboot, AppData.CHARITY);
            }
        }

这是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;
    }

最佳答案

您的CarBootSaleList类不是列表。这是一个包含列表的类。

您有三种选择:

使您的CarBootSaleList对象实现IEnumerable
或者

使您的CarBootSaleList继承自List<CarBootSale>
或者

如果您很懒,这几乎可以完成相同的操作而无需额外的编码

List<List<CarBootSale>>

关于c# - C#Foreach语句不包含GetEnumerator的公共(public)定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15159014/

10-10 11:24