Ho un enum che ha 4 valori:Casting un array di interi a una matrice di enumerazioni
public enum DriveRates
{
driveSidereal = 0,
driveLunar = 1,
driveSolar = 2,
driveKing = 3
}
ho un array di valori che voglio lanciare a una serie di DriveRates. Tuttavia quando lo faccio var rates = (DriveRates[])ret;
, con ret
essendo una matrice di oggetti di numeri interi (probabilmente), si dice Unable to cast object of type 'System.Object[]' to type 'ASCOM.DeviceInterface.DriveRates[]'.
ret
= {0,1,2,3}
. Come dovrei farlo invece. Di nuovo, sto provando a convertire un array di valori enum in un array di enum ... beh, valori :) Ma sto provando a convertire dal tipo object[]
al tipo DriveRates[]
.
Hmm ... sì, è un array di oggetti. Apparentemente una matrice di oggetti non può essere convertita in una matrice di interi. –
@ArlenBeiler: beh, può essere convertito in un * nuovo * array, ma l'array * esistente * non può essere semplicemente trattato come una matrice di ints, poiché hanno rappresentazioni diverse. –
Vale la pena notare che anche 'is' e' as' gli operatori potrebbero confondersi con i tipi di enum array, vedere l'ultimo snippet su http://stackoverflow.com/a/21186137/717732 - tutti e tre i controlli dicono 'true' , mentre '.GetType()' ovviamente non dice. – quetzalcoatl