2013-10-02 22 views
6

betrachten die Variable OB4 wie in Abbildung variable ob4mit dem Objekt arbeiten

jetzt gezeigt: Wie kann ich OB4 erreichen [0] -> [0,2]

var o=ob4[0]; 
double[,] p=(double[,]) o[0,0]; 

die Linie (Doppel [, ] p = (double [,]) o [0,0];) gibt den folgenden Fehler:
Indizierung anwenden kann nicht mit [], um einen Ausdruck des Typs 'Objekt'

+0

Try OB4 [0,2] als OB4 ist ein mehrdimensionales Array. – Trent

+1

Sie sollten wirklich einige bessere Typen als Arrays von unbekannten Objekten verwenden ... – poke

+0

@FizzBuzz: Nein, es ist nicht - es ist vom Typ 'Objekt []'. Siehe den Screenshot. –

Antwort

9

Sie müssen o[0, 0]-werfenzuerst:

var o = (object[,]) ob4[0]; 
double[,] p = (double[,]) o[0, 0]; 

Es wäre besser, wenn Sie aber mit so wenig Typinformationen zur Compile-Zeit all diese verschachtelt multidimensionalen Arrays mit vermeiden konnte - Sie haben uns nicht viel Kontext gegeben, aber wenn Sie könnten Ändern Sie Ihr Objektmodell, es würde viel helfen.

1

Nun, von der Fehlermeldung ist es offensichtlich, dass die Laufzeit denkt o ist object, nicht object[,]. So könnten Sie den Code ändern zu:

double[,] = (double[,])((object[,])o)[0,0]; 

Nun ist die Laufzeit weiß, dass o als object[,] behandelt werden sollten.

+0

danke für deine antwort. jetzt funktioniert es wie ich will. –

Verwandte Themen