Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[c#] Typecast multidimenionale array

Pagina: 1
Acties:

Verwijderd

Topicstarter
Is het mogelijk in c# om een variable van het type object[,] te typecasten naar een ander type (bijv int[,]). Dus ik wil hetvolgende wil bereiken:
C#:
1
2
    object[,] oArray = { { 3, 4 }, { 2, 3 } };
    int[,] iArray = (int[,])oArray;

Dit geeft echter de volgende foutmelding:
Cannot convert type 'object[*,*]' to 'int[*,*]
Voor een normale array is er de functie CopyTo() waarbij het type kan worden aangeven, maar dit gaat niet bij meerdimensionale arrays. Ook Clone() geeft de melding dat het niet mogelijk is om te casten. Zit er dan niets anders op dan zelf door de array te itereren of heb ik iets over het hoofd gezien bij het zoeken naar een oplossing?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 20:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat hij niet kan casten is vrij logisch - hij weet immers niet van tevoren of er wel allemaal dat soort objecten in zitten als waar je naartoe wilt casten. Voor hetzelfde geldt zit er ook een string in, wat natuurlijk gewoon kan in een object[,].

Kun je trouwens niet gewoon de (static) functie Array.Copy() gebruiken?

C#:
1
2
3
object[,] oArray = { { 3, 4, 5 }, { 2, 3, 4 } }; 
int[,] iArray = new int[oArray.GetLength(0),oArray.GetLength(1)];
System.Array.Copy(oArray, iArray, oArray.Length);

[ Voor 22% gewijzigd door .oisyn op 11-10-2007 16:59 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Dat hij niet kan casten is vrij logisch - hij weet immers niet van tevoren of er wel allemaal dat soort objecten in zitten als waar je naartoe wilt casten.
Ja dat weet ik, maar als ik zelf ga itereren en ga casten doe ik hetzelfde. De functie weet dan niet dat het kan maar het zou handig zijn als hij het zou proberen en als het lukt is het toch goed :9

*Ik was een reply aan het typen maar zie net dat je jouw bericht had gewijzigd.. Dat werkt inderdaad, dankjewel.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Als je 2.0 gebruikt heb je ook een functie Array.ConvertAll<T1,T2>()

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

farlane schreef op vrijdag 12 oktober 2007 @ 08:30:
Als je 2.0 gebruikt heb je ook een functie Array.ConvertAll<T1,T2>()
Heb je daar een voorbeeld van voor een tweedimensionale array? Array.ConvertAll<TInput,TOutput> werkt namelijk enkel met eendimensionale array. Ook wel logisch, want TInput mag niet object[] zijn bijvoorbeeld. Met ConvertAll kom je alsnog op een loop uit.