C# Foreach déclaration ne contient pas de définition publique pour GetEnumerator
Je vais avoir un problème avec une application Windows Form, je suis en train de construire en C#. L'erreur consiste à déclarer: "instruction foreach ne peut pas fonctionner sur des variables de type 'CarBootSale.CarBootSaleList "parce que" CarBootSale.CarBootSaleList' ne contient pas une définition publique pour "GetEnumerator'".
Je n'arrive pas à comprendre quelle en est la cause.
C'est le code qui est en train de jeter l'erreur:
List<CarBootSaleList> Sortcarboot = new List<CarBootSaleList>();
foreach (CarBootSale c in carBootSaleList)
{
if (c.Charity == "N/A")
{
Sortcarboot.Add(carBootSaleList);
textReportGenerator.GenerateAllReport(Sortcarboot, AppData.CHARITY);
}
}
et c'est le CarBootSaleList classe où il est dit, il n'y a pas un GetEnumerator définition:
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;
}
foreach (CarBootSaleList c dans Sortcarboot)
vous trouverez peut-être une réponse ici (mise en œuvre de foreach): stackoverflow.com/questions/10929586/...
Ce sont ces deux lignes sont-ils liés? Liste<CarBootSaleList> Sortcarboot = new List<CarBootSaleList>(); foreach (CarBootSale c dans carBootSaleList)
Où sont
Il est le premier de la classe "CarBootSaleList carBootSaleList = new CarBootSaleList();"
vous trouverez peut-être une réponse ici (mise en œuvre de foreach): stackoverflow.com/questions/10929586/...
Ce sont ces deux lignes sont-ils liés? Liste<CarBootSaleList> Sortcarboot = new List<CarBootSaleList>(); foreach (CarBootSale c dans carBootSaleList)
Où sont
carBootSaleList
variable déclarée?Il est le premier de la classe "CarBootSaleList carBootSaleList = new CarBootSaleList();"
OriginalL'auteur Danny | 2013-03-01
Vous devez vous connecter pour publier un commentaire.
Votre
CarBootSaleList
classe n'est pas une liste. C'est une classe qui contient une liste.Vous disposez de trois options:
Faire de votre
CarBootSaleList
objet de mettre en œuvreIEnumerable
ou
faire de votre CarBootSaleList hériter de
List<CarBootSale>
ou
si vous êtes paresseux cela pourrait presque faire la même chose sans codage supplémentaire
List
qui contient unList
deCarBootSales
? Seules les deux premières options effectivement un sens de le faire réellement.Vous roches frère .... Cela a fonctionné pour moi
OriginalL'auteur Guish
Vous ne nous montrez pas la déclaration de
carBootSaleList
. Toutefois, le message de l'exception, je peux voir qu'il est de typeCarBootSaleList
. Ce type de ne pas mettre en œuvre laIEnumerable
de l'interface et par conséquent ne peut pas être utilisé dans un foreach.Votre
CarBootSaleList
classe doit implémenterIEnumerable<CarBootSale>
:OriginalL'auteur pescolino
En boucle foreach au lieu de carBootSaleList utilisation carBootSaleList.les données.
Vous n'avez probablement pas besoin de répondre, mais il pourrait aider quelqu'un.
OriginalL'auteur Jonhtra
Vous devez implémenter l'interface IEnumerable (CarBootSaleList devrait impl dans votre cas).
http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.getenumerator.aspx
Mais il est généralement plus facile à la sous-classe du Système.Les Collections.ObjectModel.Collecte et amis
http://msdn.microsoft.com/en-us/library/system.collections.objectmodel.aspx
Votre code semble aussi un peu étrange, comme vous l'imbrication de listes?
OriginalL'auteur Grubl3r