我目前尝试将.mat文件转换为XML。对于这个任务,我必须使用一个库,它给我一个动态对象。我知道.mat文件的结构,所以我可以从中获取数据。我将这些数据存储在一个Object中。 .mat文件的一个值是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
答案 0 :(得分:3)
类型名称中的*
表示您返回了不符合要求的数组类型。特别是与COM服务器相同,它们倾向于使用1作为下限。您不能将此类数组转换为C#数组类型,它只支持下限为0的数组。但您可以将其转换为Array
。
使用Array方法访问阵列。像Array.GetLowerBound()告诉你从哪里开始索引,GetUpperBound()来找出停止的位置。使用Array.GetValue()读取数组元素。你需要带有int []的重载,因为这是一个二维数组而不是锯齿状数组。