c# - 如何在 Xamarin 中设置 NSDictionary<NSString, NSObject> 对象的值?

标签 c# generics xamarin xamarin.ios nsdictionary

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

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

其次,如何创建这样的对象并定义键和关联对象?

最佳答案

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);

关于c# - 如何在 Xamarin 中设置 NSDictionary<NSString, NSObject> 对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39676993/

相关文章:

c# - 在 JavaScript/TypeScript 中实现 IEnumerable

r - rep 真的是泛型吗?

c# - 设置 xamarin toolbaritems 的背景颜色

c# - 在 Windows 和 NET 中获取有关连接的 USB 设备的所有可用信息

c# - 可重用的 C#、Java 和/或 Flex 组件

c# - 返回默认值。 (C#)

iOS : Expandable list view not drawing newly added control

c# - 如何从 websocket-sharp 客户端将文件发送到 SignalR hub?

c# - 由 Process Start 启动的进程的进程 ID

Java:在泛型类中使用类型化变量