2014-02-06 92 views
2

欲封二維陣列編組二維陣列

int [10][20] //const dimensions size 
從C++ DLL

到C#代碼。有沒有自動編組器?找不到這麼簡單的任務的好解決方案。

public int[,] _operators; 

給出未定義的值。 是的,我可以使它僅用於編組,然後再次讀取它在C#中的2個dimsions,但有自動簡單的方法嗎?

=================

,我認爲是這樣使用指針的最佳方式:

  const int 1dSize = 10; 
      const int 2dSize = 10; 
      var ret = new int[1dSize, 2dSize]; 

     unsafe 
     { 
      int* ptrOnArray = NativeLibPrototypes.Get2DArrayPtr(); 
      for (int i1 = 0; i1 < 1dSize; i1++) 
      { 
       for (int i2 = 0; i2 < 2dSize; i2++) 
       { 
        ret[i1, i2] = *ptrOnArray; 
        ptrOnArray++; 
       } 
      } 
     } 

回答

1

嘗試

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 200)] 
int[] _operators; 

大小應該是數組中元素的數量。

入住這Default Marshaling for Arrays

+0

不工作,不確定 –

+0

在那裏你得到了一個未定義? – Sameer

+0

當我看着調試器_operators我看到「?」在每個元素處,_operators [0,0]給我的索引超出範圍...(_操作符是C++類的字段,現在我評論除_operators之外的所有內容) –