Ricevo questo messaggio di errore e non riesco a capire perché!Messaggio di errore relativo a IEnumerable.GetEnumerator()
Error 1 'Exo5Chap12.ShortCollection<T>' does not implement interface member
'System.Collections.IEnumerable.GetEnumerator()'.
'Exo5Chap12.ShortCollection<T>.GetEnumerator()' cannot implement
'System.Collections.IEnumerable.GetEnumerator()' because it does not have the matching
return type of 'System.Collections.IEnumerator'.
E:\MyFolders\Dev\c#\Chapter12\Exo5Chap12\Exo5Chap12\exo5.cs 9 18 Exo5Chap12
Ecco il codice con un'implementazione di GetEnumerator(). Cosa c'è che non va?
public class ShortCollection<T> : IList<T>
{
protected Collection<T> innerCollection;
protected int maxSize = 10;
public IEnumerator<T> GetEnumerator()
{
return (innerCollection as IEnumerator<T>).GetEnumerator();
}
}
Semplicemente non lanciare l'oggetto innerCollection, sia per le implementazioni IEnumerable che IEnumerable. Vedere il mio codice completo nella risposta postata qui sotto ... –
code4life
Ho notato che il messaggio di errore ti dice esattamente * cosa sta andando storto qui: che IEnumerable non è stato implementato, che è necessario che sia implementato e che l'unico metodo che potrebbe implementarlo ha il tipo di ritorno sbagliato. Ciò ha già richiesto un'analisi degli errori piuttosto sofisticata e tuttavia non è stato sufficiente per consentire di diagnosticare il problema da solo. Un altro messaggio di errore sarebbe stato più utile? Quale tipo di messaggio di errore ti avrebbe permesso di diagnosticare il problema senza chiedere aiuto? –
Sono un principiante e sto leggendo il libro di Visual C# Wrox (per principianti). Non sapevo che avrei dovuto implementare sia IEnumerable che IEnumerable, in quanto non è nemmeno menzionato nel libro. Inoltre, quel codice era la risposta dell'esercizio (chiedendosi se hanno controllato il codice prima di stamparlo). Ho dato un'occhiata al sito Web di msdn e al forum di wrox, ma non lo menzionano neanche. Devo dire che IEnumerable è abbastanza difficile per me da imparare. Ma ora che leggo di nuovo l'errore sono d'accordo che abbia senso. –