Jeg tror jeg har en ide om hvorfor det går galt.
Du bruger ArrayList som ikke er typefast, hvor hvis du bruger List<string> så får du samme funktionalitet, men hvor det du putter ind og får ud er sikret er string og du kan få kompileringsfejl tidligere også.
Dit problem er følgende:
- String[] lines = lala.Split('#');
- test.Add(lines);
Her har du tilføjet dit string-array (string[]) til din ArrayList ( test.add(lines); ) så nu indeholder din arraylist et stringarray.
Dette er fordi lines er af typen string array (string[]) som du jo tilføjer til din arrayliste, og da denne kan tage alle typer objekter kan dette sagtens lade sig gøre da du blot skal vide hvad der er i når du tager dem ud igen.
Hvis du her havde brugt List<string> ville du ikke få lov at skrive "test.add(lines);" da objektet lines ikke er en string.
I koden nedenunder går det så galt:
- foreach (String line in test)
Her forsøger den at lave det første element ( [0] ) om til en string, men her er placeret et String[] istedet som "lines" jo er typen af.
Derfor kan den ikke lave et string-array om til en string som du beder den om, og derfor du får fejlen.
Du kan enten bruge en metode på lines til at lave den til arraylist eller list, kan ikke huske syntaksen, men sådan vil du kunne overskrive dit array test så du får elementerne ind i. Ellers tror jeg du kan bruge AddRange(lines) som tilføjer flere elementer på en gang, men ved ikke om den kan fungere i denne sammenhæng - prøv dig frem.
Hvis det var mig ville jeg bruge List<string> istedet da den er typefast og meget nemmere at arbejde med også.
P.S. Se eventuelt nærmere på at placere lines konstruktøren udenfor dit peek-loop for ikke at oprette dette array hver gang - minimalt waste, men blot god kodestil så man får det god standart.
Håber det hjalp dig videre
Indlæg senest redigeret d. 07.08.2011 20:08 af Bruger #16651