Stel ik heb een arraylist waar bepaalde object van een 1 type inzitten. Van een bepaald item uit die lijst wil ik een veld veranderen.
Een gewone toekenning werkt dan niet.
((objecttype)ArrayList[item]).veldnaam = ....;
Dit mag niet omdat de compiler aangeeft dat het linker deel geen variabele is die hij mag veranderen.
Toen heb ik geprobeerd om een variabele te laten verwijzen naar dit object door een simpele toekenning.
objecttype Test = (objecttype)ArrayList[item];
Test.veldnaam = ....;
Maar dit werkt ook niet omdat hij een nieuwe instantie maakt, daardoor is de variabele Test een nieuw object. Hetobject dat in de Arraylist staat blijft dus onveranderd.
De enige oplossing die volgens mij toen overbleef was een pointer te plaatsen naar het veld of het hele object. Maar deze pogingnen stranden tot nu toe allemaal, omdat de compiler problemen heeft met de volgende regels.
Even voor de duidelijkheid:
UserInfo is het object type(struct) dat in de lijst zit.
UserList is de ArrayList.
Status is het veld van type int dat veranderd moet worden.
eerst geprobeert om een pointer naar het hele object te zetten:
fixed(UserInfo* User= &(UserInfo)UserList[ID])
Hierbij krijg ik de volgende errors:
- Cannot take the address or size of a variable of a managed type(deze er heeft betrekking op de '*')
- Cannot take the address of the given expression.(deze er heeft betrekking op de '&')
Bij het plaatsen van een pointer naar het veld:
fixed(int* User = &((UserInfo)UserList[ID]).Status)
Krijg ik al weer de 2e error:
- Cannot take the address of the given expression.(deze er heeft betrekking op de '&')
Heeft iemand een idee hoe ik toch het veld van dat object in die ArrayList kan veranderen?
Alvast hartelijk dank!
Een gewone toekenning werkt dan niet.
((objecttype)ArrayList[item]).veldnaam = ....;
Dit mag niet omdat de compiler aangeeft dat het linker deel geen variabele is die hij mag veranderen.
Toen heb ik geprobeerd om een variabele te laten verwijzen naar dit object door een simpele toekenning.
objecttype Test = (objecttype)ArrayList[item];
Test.veldnaam = ....;
Maar dit werkt ook niet omdat hij een nieuwe instantie maakt, daardoor is de variabele Test een nieuw object. Hetobject dat in de Arraylist staat blijft dus onveranderd.
De enige oplossing die volgens mij toen overbleef was een pointer te plaatsen naar het veld of het hele object. Maar deze pogingnen stranden tot nu toe allemaal, omdat de compiler problemen heeft met de volgende regels.
Even voor de duidelijkheid:
UserInfo is het object type(struct) dat in de lijst zit.
UserList is de ArrayList.
Status is het veld van type int dat veranderd moet worden.
eerst geprobeert om een pointer naar het hele object te zetten:
fixed(UserInfo* User= &(UserInfo)UserList[ID])
Hierbij krijg ik de volgende errors:
- Cannot take the address or size of a variable of a managed type(deze er heeft betrekking op de '*')
- Cannot take the address of the given expression.(deze er heeft betrekking op de '&')
Bij het plaatsen van een pointer naar het veld:
fixed(int* User = &((UserInfo)UserList[ID]).Status)
Krijg ik al weer de 2e error:
- Cannot take the address of the given expression.(deze er heeft betrekking op de '&')
Heeft iemand een idee hoe ik toch het veld van dat object in die ArrayList kan veranderen?
Alvast hartelijk dank!