2013-10-02 11 views
6

rozważyć zmienna OB4 jak pokazano na rysunku variable ob4Praca z obiektu

teraz: Jak mogę dotrzeć OB4 [0] -> [0,2]

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

linię (double [, ] p = (double []) [0,0] o;) daje następujący błąd:
nie mogą ubiegać się o indeksowania [] w celu wyrażenia typu 'obiektu'

+0

Spróbuj ob4 [0,2], ponieważ ob4 jest tablicą wielowymiarową. – Trent

+1

Powinieneś używać lepszych typów niż tablice nieznanych obiektów ... – poke

+0

@FizzBuzz: Nie, nie jest - jest typu 'object []'. Zobacz zrzut ekranu. –

Odpowiedz

9

musisz rzucać o[0, 0] do object[,] pierwsza:

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

Byłoby lepiej, gdyby można było uniknąć tych wszystkich zagnieżdżonych tablic wielowymiarowych tak mało informacji na temat typu w czasie kompilacji, choć - nie dały nam wiele kontekst, ale jeśli można zmienić swój model obiektowy, bardzo by to pomogło.

1

Cóż, z komunikatu o błędzie wynika, że ​​środowisko wykonawcze uważa, że ​​o to object, a nie object[,]. Więc może chcesz zmienić swój kod do:

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

Teraz wie, że środowisko wykonawcze o powinny być traktowane jako object[,].

+0

dzięki za odpowiedź. teraz działa tak, jak chcę. –