[an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive] (none)
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive] (none)
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive]
Den kryptiske emnelinie viser nok det faktum at jeg er rimeligt ny i
objektorienteret programmering og ikke mindst C#
I forbindelse med at lære brugen af klasser har jeg lavet et lille
program, som består af 2 klasser.
class spusDB - et database objekt der kan hente nogle data fra min
PostgreSQL server
I spusDB har jeg en ArrayList som indeholder nogle resultater fra
databasen. I denne ArrayList er hvert objekt en struktur med to
strenge. ArrayListen er "public" og kan derfor læses fra andre klasser
(dårlig objektorientering... ved det godt - men jeg er amatørnybegynder)
Da jeg fra en anden klasse skal udlæse dataene fra den af spusDB
genererede ArrayList løber jeg ind i et problem.
Jeg forsøger at gå igennem ArrayList med
foreach (EmployeeType emp in spusAccess.employeeList)
Console.WriteLine("Id: {0}\tName: {1}", emp.id, emp.name);
Får jeg følgende runtime fejl :
Unhandled Exception: System.InvalidCastException: Cannot cast from
source type to destination type. at MyProg.Main (System.String[] args)
[0x00000]
Dette fungerer dog udemærket hvis min løkke kaldes fra en metode i
spusDB klassen.
Hvis main() flyttes fra MyProg til spusDB virker det som det skal.
Dit problem er, at du har flere forskellige structs med navnet
EmployeeType. De er godt nok ens, men for compileren er der tale om
forskellige typer, der ikke kan konverteres mellem.
Løsningen er at definere din struct en gang på samme niveau som
klasserne. Eller at lade definitionen i spusDB være public og bruge
spusDB.EmployeeType som type i main.
Må jeg forresten anbefale at bruge en List<EmployeeType> i stedet? Den
er af dynamisk størrelse ligesom en ArrayList, men er typestærk ligesom
et array. Og hvis du kommer fra en Perl eller PHP-baggrund, er du nok
(lige som undertegnede) glad for streng-indekserede arrays. Sådan et kan
laves som Dictionary<string, EmployeeType>
Last modified
2007-10-01, 02:01 CEST
[an error occurred while processing this directive] This page is maintained by
[an error occurred while processing this directive]MHonArc
[an error occurred while processing this directive] #
[an error occurred while processing this directive] *