无法从“ System.Array”转换为“ int [*]”

时间:2019-03-07 15:35:54

标签: c# arrays type-conversion

在要求我开发的应用程序中,我必须与无法控制的dll进行接口。

我从dll呼叫:

NAMESPACE.myFunction(string Name, int[*] Coordinates)

此int [*]类型是什么?答案很容易找到here:这是一个基于非0的数组。这个问题简短地提到了一些LabView编译的dll,与我目前的情况非常相似。

通过研究,我可以确定只有Array才能具有int32[*]类型。证明它的一种简单方法是运行以下代码:

Array AAA = Array.CreateInstance(typeof(int), 4, 0);
Array AAA2 = Array.CreateInstance(typeof(int), 4, 1);
Array BBB = Array.CreateInstance(typeof(int), 4);
Array CCC = Array.CreateInstance(typeof(int), new int[] { 4 } , new int[] { 0 } );
Array DDD = Array.CreateInstance(typeof(int), new int[] { 4 });

int[] arr1 = (int[])Array.CreateInstance(typeof(int), 4);
int[] arr2 = (int[])Array.CreateInstance(typeof(int), new int[] { 4 }, new int[] { 0 });
Array arr3 = Array.CreateInstance(typeof(int), new int[] { 4 }, new int[] { 1 });

Console.WriteLine("AAA.type: " + AAA.GetType());       \\ System.Int32[,]
Console.WriteLine("AAA2.type: " + AAA2.GetType());     \\ System.Int32[,]
Console.WriteLine("BBB.type: " + BBB.GetType());       \\ System.Int32[]
Console.WriteLine("CCC.type: " + CCC.GetType());       \\ System.Int32[]
Console.WriteLine("DDD.type: " + DDD.GetType());       \\ System.Int32[]
Console.WriteLine("---");
Console.WriteLine("arr1.type: " + arr1.GetType());     \\ System.Int32[]
Console.WriteLine("arr2.type: " + arr2.GetType());     \\ System.Int32[]
Console.WriteLine("arr3.type: " + arr3.GetType());     \\ System.Int32[*]

我找不到答案的问题是:如何在没有转换类型错误的情况下将数组类型传递给方法调用?此调用引发错误:

NAMESPACE.myFunction("", arr3)
                         ^
                         Cannot convert from 'System.Array' to 'int[*]'

0 个答案:

没有答案