Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c语言中将对象数组转换为双数组#_C#_Type Conversion - Fatal编程技术网

C# 如何在c语言中将对象数组转换为双数组#

C# 如何在c语言中将对象数组转换为双数组#,c#,type-conversion,C#,Type Conversion,您好,最近我尝试使用matlab函数得到结果,matlab函数可以返回类似于双数组的图像,但是我在C#中得到了double by object类,但是我无法转换为double by object类 有人可以帮我 我已经解决了这个问题 MLApp.MLApp matlab = new MLApp.MLApp(); matlab.Execute(@"Path"); object result = null; matlab.Feval("

您好,最近我尝试使用matlab函数得到结果,matlab函数可以返回类似于双数组的图像,但是我在C#中得到了double by object类,但是我无法转换为double by object类 有人可以帮我

我已经解决了这个问题

        MLApp.MLApp matlab = new MLApp.MLApp();
        matlab.Execute(@"Path");
        object result = null;
        matlab.Feval("RemoveShadow", 1, out result, 12, 13);
        var res = (result as object[]).Select(x => (double[,])x).ToArray();
        object im = res.GetValue(0);
        double[,] d = (double[,])im;

我已解决此问题

您可以尝试将
对象[]
转换为
双[]

        MLApp.MLApp matlab = new MLApp.MLApp();
        matlab.Execute(@"Path");
        object result = null;
        matlab.Feval("RemoveShadow", 1, out result, 12, 13);
        var res = (result as object[]).Select(x => (double[,])x).ToArray();
        object im = res.GetValue(0);
        double[,] d = (double[,])im;
var res = (result as object[]).Select(x => (double)x).ToArray();

如果对象数组中的所有值都是双精度的,则可以选择上述答案

double[] resultArray = Array.ConvertAll<object, double>
                                  (inputArray, x => (double)x);
double[]resultArray=Array.ConvertAll
(输入阵列,x=>(双)x);

正确的处理方法是


var res=(结果为对象[])。选择(x=>Convert.ToDouble(x)).ToArray()

尝试执行
result.GetType()
以查看其确切类型(在调试器中或执行
Console.WriteLine(result.GetType())
,如果您正在执行控制台程序),但我无法将该对象类转换为两倍。什么不起作用?您收到错误消息了吗?我收到“program.exe中发生'System.IndexOutorAngeException'类型的未处理异常”,如果您得到
IndexOutorAngeException
,这意味着您试图访问数组中不存在的索引。我注意到您正在调用
res[1]
。我们确定这有价值吗?数组有一个从零开始的索引,这意味着第一个元素位于索引0而不是索引1谢谢我解决了我的问题谢谢你的回答但对象类没有选择方法我需要这个数组双[,]谢谢我得到了结果我尝试了他的代码但它不起作用,我得到了InvalidTypeCaste异常,因为有时数组可能有null。所以上面给出的解决方案在处理null时有问题。如果我们使用我的解决方案,您可以控制空类型转换。