2013-10-02 16 views
6

xem xét các biến ob4 như trong hình variable ob4Làm việc với các đối tượng

bây giờ là: làm thế nào tôi có thể đạt ob4 [0] -> [0,2]

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

dòng (đôi [, ] p = (double [,]) o [0,0];) cung cấp cho các lỗi sau:
không thể áp dụng lập chỉ mục với [] để một biểu hiện của loại 'đối tượng'

+0

Hãy thử ob4 [0,2] vì ob4 là một mảng đa chiều. – Trent

+1

Bạn thực sự nên sử dụng một số loại tốt hơn so với mảng của các đối tượng không xác định… – poke

+0

@ FizzBuzz: Không có nó - nó thuộc loại 'object []'. Xem ảnh chụp màn hình. –

Trả lời

9

Bạn cần phải cast o[0, 0]-object[,] đầu tiên:

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

Sẽ tốt hơn nếu bạn có thể tránh được việc tất cả các mảng đa chiều lồng với loại thông tin rất ít tại thời gian biên dịch mặc dù - bạn đã không ban cho chúng ta nhiều bối cảnh, nhưng nếu bạn có thể thay đổi mô hình đối tượng của bạn, nó sẽ giúp ích rất nhiều.

1

Vâng, từ thông báo lỗi, rõ ràng là thời gian chạy nghĩ rằng oobject, không phải object[,]. Vì vậy, bạn có thể muốn thay đổi mã của bạn để:

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

Bây giờ thời gian chạy đều biết rằng o phải được coi là object[,].

+0

cảm ơn câu trả lời của bạn. bây giờ nó hoạt động như tôi muốn. –

Các vấn đề liên quan