3

我目前尝试将 .mat 文件转换为 XML。对于这个任务,我必须使用一个库,它给了我一个动态对象。我知道 .mat 文件的结构,所以我可以从中获取数据。我将这些数据存储在一个对象中。.mat 文件的值之一是 MATLAB-type <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() 读取数组元素。您将需要采用 int[] 的重载,因为这是一个二维数组而不是锯齿状数组。

于 2013-01-18T19:21:49.237 回答