C# Monotouch如何在C中从NSArray检索objectAtIndex#

C# Monotouch如何在C中从NSArray检索objectAtIndex#,c#,nsarray,C#,Nsarray,在objectiveC中,给定一个包含字符串的NSArray fred,我可以说: NSString *s = [fred ObjectAtIndex:5]; 什么是c#等价物?Rosetta stone说要使用方法ValueAt,但该方法返回IntPtr var i = fred.ValueAt(5); 但接下来您将了解如何将IntPtr指针转换为NSString指针。我也遇到了同样的情况。 您可以使用new NSString()将该IntPtr转换为NSString,如: 这对你来说可能

在objectiveC中,给定一个包含字符串的NSArray fred,我可以说:

NSString *s = [fred ObjectAtIndex:5];
什么是c#等价物?Rosetta stone说要使用方法
ValueAt
,但该方法返回
IntPtr

var i = fred.ValueAt(5);

但接下来您将了解如何将
IntPtr
指针转换为
NSString
指针。

我也遇到了同样的情况。 您可以使用new NSString()将该IntPtr转换为NSString,如:


这对你来说可能太晚了,但也许它会帮助其他人。

通过IntPtr感觉不是个好主意。相反,只要您知道要获取的项目类型,就可以使用以下选项:

string strValue = NSString.FromHandle(nsArr.ValueAt(1));
int index = 0;
NSString str = myNsArr.GetItem<NSString>(index);
int索引=0;
NSString str=myNsArr.GetItem(索引);

我尝试了您的建议,但我发现错误“'Foundation.NSNumber.NSNumber(System.IntPtr)'由于其保护级别而无法访问”。在检查Xamarin绑定的NSNumber后,我可以看到它受到了保护:受保护的内部NSNumber(IntPtr句柄);虽然这段代码可以回答这个问题,但最好包含一些上下文,解释它是如何工作的,并描述何时使用它。从长远来看,只使用代码的答案是没有用的。
int index = 0;
NSString str = myNsArr.GetItem<NSString>(index);