for array c# definition public enumerator

array - foreach c# string



La instrucción Foreach de C#no contiene una definición pública para GetEnumerator (4)

Debe implementar la interfaz IEnumerable (CarBootSaleList debería implementarla en su caso).

http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.getenumerator.aspx

Pero usualmente es más fácil subclasificar System.Collections.ObjectModel.Collection y amigos

http://msdn.microsoft.com/en-us/library/system.collections.objectmodel.aspx

¿Tu código también parece un poco extraño, como si estuvieras anidando listas?

Estoy teniendo un problema con una aplicación de Windows Form que estoy creando en C #. El error indica que "la instrucción foreach no puede operar en variables de tipo ''CarBootSale.CarBootSaleList'' porque ''CarBootSale.CarBootSaleList'' no contiene una definición pública para ''GetEnumerator''".

Parece que no puedo entender lo que está causando esto.

Este es el código que está lanzando el error:

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

y esta es la clase CarBootSaleList donde dice que no hay una definición de 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; }


En el bucle foreach en lugar de carBootSaleList use carBootSaleList.data.

Probablemente ya no necesite respuesta, pero podría ayudar a alguien.


Su clase CarBootSaleList no es una lista. Es una clase que contiene una lista.

Tienes tres opciones:

Haga que su objeto IEnumerable implemente IEnumerable

o

haga que su CarBootSaleList herede de la List<CarBootSale>

o

Si eres perezoso, esto podría hacer casi lo mismo sin codificación adicional.

List<List<CarBootSale>>


Usted no nos muestra la declaración de carBootSaleList . Sin embargo, desde el mensaje de excepción puedo ver que es de tipo CarBootSaleList . Este tipo no implementa la interfaz IEnumerable y, por lo tanto, no se puede utilizar en un foreach.

Su clase CarBootSaleList debe implementar IEnumerable<CarBootSale> :

public class CarBootSaleList : IEnumerable<CarBootSale> { private List<CarBootSale> carbootsales; ... public IEnumerator<CarBootSale> GetEnumerator() { return carbootsales.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return carbootsales.GetEnumerator(); } }