2013-12-10 3 views
0

В C++ можно получить срез многомерного массива, какC++ неровный срез массива в C#

double parallelopipedPts[8][3]; 
    parallelopipedPts[0]; 
    parallelopipedPts[1]; 
    ... 
    parallelopipedPts[7]; 

В C# я пытаюсь подражать этим и попытался

double[][] parallelopipedPts = new double[8][]; 
    parallelopipedPts[0]; 
    parallelopipedPts[1]; 
    ... 
    parallelopipedPts[7]; 

Однако я получаю проблемы с доступом к памяти

Как это решить?

+0

Можете ли вы немного расширить? Какой элемент вы надеетесь вернуть? Или вы пытаетесь вернуть адрес элемента? –

+0

Я хотел бы получить фрагмент (одно измерение) массива с зубчатым контуром, как это сделать в C#? – cMinor

+0

Вы не можете. См. Здесь: http://stackoverflow.com/a/4802062/1517578 –

ответ

1

В коде C# вы создали массив из 8 'двойных массивов'.

Двойные массивы в этом массиве из-8 еще не назначены, поэтому они равны нулю.

Вы можете заполнить его с массивами-в-3-двойников (к примеру), как это:

for (int i = 0; i < parallelopipedPts.Length; i++) 
{ 
    parallelopipedPts[i] = new double[3]; 
} 

Тогда вы можете смело использовать свои подмассивы.

+0

Не мог ли он просто положить в 3, как в своем коде на C++? – Magus

+0

Нет, double [] [] parallelopipedPts = новый двойной [8] [3]; не будет компилироваться. – Baldrick

+0

Является ли цикл for единственным выходом? – cMinor

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