如何为NSDictionary对象在Xamarin

本文关键字:对象 Xamarin nssoobject NSString NSDictionary | 更新日期: 2023-09-27 18:08:41

我需要与一个接收Xamarin中NSDictionary<NSString, NSObject>类型对象的函数进行接口。

首先,我不理解语法。NSDictionary<NSString, NSObject>类型对象究竟是什么?我知道有NSDictionary类型,我知道如何创建一个并设置键和值,但什么是NSDictionary<?,?> ?它应该是某种特殊的元组吗?

第二,我如何创建这样一个对象并定义键和相关对象?

如何为NSDictionary<NSString < nssoobject >对象在Xamarin

NSDictionary<TKey, TValue>只是NSDictionary的通用版本。这意味着键的类型都是TKey(在您的示例中是NSString),值的类型都是TValue(在您的示例中是NSObject.)。这提供了更多的类型安全性,因为你不能将整数作为键。底层的iOS对象仍然是一个NSDictionary。这个类是一种"语法糖",因为我们习惯了c#中的严格类型,并希望在任何可能的地方使用它。

可以用构造函数创建它。它有多个构造函数。例如,NSDictionary(TKey[] keys, TValue[] values)将键和值作为参数,并将其创建NSDictionary

var keys = new[]
{
    new NSString("key1"),
    new NSString("key2"),
    new NSString("key3"),
    new NSString("key4")
};
var objects = new NSObject[]
{
    // don't have to be strings... can be any NSObject.
    new NSString("object1"),
    new NSString("object1"),
    new NSString("object1"),
    new NSString("object1")
};
var dicionary = new NSDictionary<NSString, NSObject>(keys, objects);

On Xamarin。Mac和Sven-Michael st be之后,它可以是:

var dictionary = new NSDictionary(
    new NSString("key1"), new NSString("object1"),
    new NSString("key2"), new NSString("object2")
);

可能Xamarin的。iOS也是,但我没有测试过。