Gå til innhold

GetEnumerator og Foreach


Anbefalte innlegg

Heisann

Har en klasse i et ClassLib som håndtere en fil for meg. Denne klassen blit brukt i en list<minklasse> og er selvsagt av typen public, både klassen og listen.

 

Når jeg lager en referanse til denne DLL'en og legger på namespacet så kan jeg uten problemer med intellisense kode mot denne llisten, men jeg får en feilmelding som sier

"Foreach statement cannot operate on variables of type 'HDSoftware.FileManager.File' because 'HDSoftware.FileManager.File' doesn not contain a public definition for GetEnumerator'"

 

Hva i alle dager er dette for noe?

Det er jo bare snakk om en helt vanlig liste som bruker en klasse som element

 

(edit): Fant det ut

Var jo bare jeg som ikke skreiv koden min riktig. Henviste til klassen i stedet for listen i Foreach uttrykket. Glem det med andre ord ;-)

Endret av HDSoftware
Lenke til kommentar
Videoannonse
Annonse

Jeg legger til hva GetEnumerator er og slikt bare.

 

Fore each bruker et av to interfaces, IEnumerable, eller IEnumerable<T>

 

Det enkleste og beste er å bruke IEnumerable<T>

 

Det man gjør, er at man implementerer IEnumerable<T> hvor T er datatypen som brukes i listen.

Deretter kan man i GetEnumerator enten lage sin egen klasse, eller bare returnere f.eks. List<T>.GetEnumeratorhvis det er en intern array eller lignende.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...