2017-01-02 5 views
-3

я не могу узнать, как сделать следующий массив:C# зазубренный массив междунар и массив

{ 3, 5, 15, { 4, 75, { 25 } } } 

Это должно быть сочетание Int и Array. Мой код функции выглядит следующим образом:

p.myMethod(new int[]{ 3, 5, 15, new int[] { 4, 75, new int []{ 25 } } }) 

Но это не работает. Как я могу получить ожидаемый результат?

+1

Почему "не это работает"? Какой результат вы получаете? – Demitrian

+0

Было бы очень полезно, если бы вы показали нам 'myMethod' и объяснили, почему вы думаете:« Это должно быть сочетание Int и Array ». –

+0

То, что вы показали, не является массивом jagged. У вас есть несколько рядов вложенных массивов. вы уверены, что вы хотите на самом деле? –

ответ

0

Это должно быть сочетание Int и массив

Единственный способ иметь массив содержит несколько типов объектов будет объявлять и инициализировать массивы с типом базового класса все элементов, так что в этом случае вам придется использовать object:

object[] array = new object[]{ 3, 5, 15, new object[] { 4, 75, new object []{ 25 } } }; 

проблема с этим, очевидно, что вам нужно будет узнать тип каждой записи массива при доступе к ним позже, потому что все они объявлены как object.

0

Посмотрите на это:

{ 3, 5, 15, { 4, 75, { 25 } } } 

пунктов по индексу 0, 1, 2 являются целыми числами. позиция по индексу 4 - это другой тип:

{ 4, 75, { 25 } } 

Массивы не могут иметь несколько типов в них. Когда вы создаете массив, вы должны указать тип, который он будет содержать.

Таким образом, единственным типом массива, который вы можете сохранить, все это будет массив типа object, так как все в .NET происходит от object.

Как это:

var a = new object[] { 3, 5, 15, new object[] { 4, 75, new[] { 25 } } }; 

Или для Вас использование ArrayList:

var a = new ArrayList { 3, 5, 15, new ArrayList() { 4, 75, new ArrayList() { 25 } } }; 
Смежные вопросы