2015-08-05 4 views
0

Мой ctor возвращает объект, который является многомерным массивом. Зависит от аргумента конструктора, объект, возвращаемый ctor, может быть разным массивом ранга, но всегда int.C#: Как получить доступ к методам массива из родительского объекта?

object arr = new int[2,2,2]; 

или

object arr = new int[2,2,2,2,2]; 

или

object arr = new int[0,0]; 

Имея arr объект, построенный, и зная, что это такое (GetType()), я хотел бы получить доступ к методам массива как Rank, GetLength, GetValue и т. Д. Как я могу получить доступ к определенным детям методам с уровня object? Пока у меня есть только четыре методы arr объекта доступны: Equals, GetHashCode, GetType и ToString

+2

Могу ли я спросить, почему у вас есть это как «объект» типа, в первую очередь, когда вы знаете его целочисленный массив? (или, по крайней мере, аналогично) – Sayse

+2

Вы можете набрать его как 'Array', но это нехорошо. Введите его как 'int []'. Ваша основная проблема отличается. Возможно, вам нужна различная реализация классов для разных типов массивов. –

+0

@Sayse: да, я мог бы хранить его как массив не как объект. Действительная точка. – user1146081

ответ

1

Cast объект в массив, например:

((int[])arr).Rank 
((int[])arr).GetLength() 

или

(arr as int[]).Rank 
+0

верьте мне или нет, но я собирался сам ответить на свой вопрос. Мой ответ будет таким же, как ваш. благодаря – user1146081

1

Вы может просто объявить вашу переменную как Array:

Array arr = new int[2,2,2,2,2]; 
int rank = arr.Rank; 

Или приведение к массиву:

object arr = new int[2,2,2,2,2]; 
Array array = (Array)arr; 
0

Вы должны бросить его обратно в объект Array, а затем эти методы будут доступны!

Смежные вопросы