3

私は現在、.matファイルをXMLに変換しようとしています。このタスクでは、動的オブジェクトを返すライブラリを使用する必要があります。.matファイルの構造を知っているので、そこからデータを取得できます。このデータをオブジェクトに保存します。.matファイルの値の1つは、MATLABタイプ<1701x256 double>です。これだと思いましdouble[][]た。しかし、値を割り当てようとすると、次のようになります。

Unbehandelte Ausnahme: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Der 
double[*,*]-Typ kann nicht in double[][] konvertiert werden.
   bei CallSite.Target(Closure , CallSite , Object )
   bei System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site,T0 arg0)
   bei CameraParser.Program.Main(String[] args) in c:\myProject\Program.cs:Zeile 44.

double[*,*]タイプとは何ですか?値を割り当てるオブジェクトの属性はどのタイプにする必要がありますか?

私は試した

double[][] myAttribute;

double[] myAttribute;

double** myAttribute;

最後のものは与えました

Error   6   Pointers and fixed size buffers may only be used in an unsafe context
4

1 に答える 1

3

タイプ名の*は、不適合な配列タイプを取り戻したことを示します。特にCOMサーバーに共通して、下限として1を使用する傾向があります。このような配列をC#配列型にキャストすることはできません。これは、下限が0の配列のみをサポートします。ただし、にキャストすることはできますArray

Arrayメソッドを使用して配列にアクセスします。Array.GetLowerBound()がインデックス作成を開始する場所を示しているように、GetUpperBound()は停止する場所を見つけます。Array.GetValue()を使用して配列要素を読み取ります。これは2次元配列であり、ギザギザの配列ではないため、int[]を使用するオーバーロードが必要になります。

于 2013-01-18T19:21:49.237 に答える