什么是双[*,*]?

时间:2013-01-18 18:51:46

标签: c#

我目前尝试将.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

1 个答案:

答案 0 :(得分:3)

类型名称中的*表示您返回了不符合要求的数组类型。特别是与COM服务器相同,它们倾向于使用1作为下限。您不能将此类数组转换为C#数组类型,它只支持下限为0的数组。但您可以将其转换为Array

使用Array方法访问阵列。像Array.GetLowerBound()告诉你从哪里开始索引,GetUpperBound()来找出停止的位置。使用Array.GetValue()读取数组元素。你需要带有int []的重载,因为这是一个二维数组而不是锯齿状数组。