Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 在MonoMac中使用数组的正确方法_C#_Objective C_Arrays_Nsarray_Monomac - Fatal编程技术网

C# 在MonoMac中使用数组的正确方法

C# 在MonoMac中使用数组的正确方法,c#,objective-c,arrays,nsarray,monomac,C#,Objective C,Arrays,Nsarray,Monomac,我刚开始在MonoMac做一个项目,到目前为止,这个项目很酷。但还有一些事情我不确定。例如:如何使用数组?我发现:当我从正在调用的方法中得到一个NSArray时,我试图得到该数组中的一个自定义对象,我一直得到类似“无法将type System.IntPtr转换为MyType”的结果 我得到的是数组。但是如果我想自己创建一个数组呢?NSArray的实现不允许我实例化它。因此,如果我得到了正确的答案,我应该使用像这样的普通数组 int[] intArray = int[10]; 分别是一个强类型数

我刚开始在MonoMac做一个项目,到目前为止,这个项目很酷。但还有一些事情我不确定。例如:如何使用数组?我发现:当我从正在调用的方法中得到一个
NSArray
时,我试图得到该数组中的一个自定义对象,我一直得到类似“
无法将type System.IntPtr转换为MyType
”的结果

我得到的是数组。但是如果我想自己创建一个数组呢?NSArray的实现不允许我实例化它。因此,如果我得到了正确的答案,我应该使用像这样的普通数组

int[] intArray = int[10];
分别是一个强类型数组,我不知道如何在C#中使用它

那么这里怎么走

谢谢

–f

一般来说,使用NSArray不是很有用,因为您最终会遇到上述问题

这就是为什么通常应该将NSArray转换为强类型数组的原因。MonoMac低级运行库为已经代表您的所有回调执行此操作

通常您会这样做:

YourType [] stronglyTyped = NSArray.ArrayFromHandle<YourType> (arrayIntPtrHandle);
也就是说,如果您使用API绑定工具访问Objective-CAPI,那么您没有正确地绑定东西。您的合约API应该具有强类型版本,而不是NSArray,因此:

 [Export ("getElements")]
 NSArray GetElements ();
应成为:

 [Export ("getElements")]
 YourType [] GetElements ();
 [Export ("getElements")]
 NSArray GetElements ();
 [Export ("getElements")]
 YourType [] GetElements ();