字典与无类型指针作为键类型

时间:2013-12-17 23:29:35

标签: c# pointers dictionary void

首先,这是我的第一个问题,如果我做错了,请告诉我。

我正在为Unity制作一些有点复杂的C#脚本,目前我需要从未知类型的指针到类型的对象实例的字典映射,具体取决于键指针的类型:

(void* => MyClass<T>)

其中T是每个条目的键指针的目标类型。

首先,我应该如何指定密钥类型? void *似乎无效。

其次,是否有一种优雅的方式来指定类型绑定?否则我可能会即兴发挥解决方案。

1 个答案:

答案 0 :(得分:3)

正如您已经发现的,C#中的指针类型不能用作Dictionary<TKey, TValue>的密钥类型。但IntPtr值可以void*,每个IntPtr都可以转换为Dictionary<IntPtr, MyClass<T>>。因此,我会使用void*并将IntPtr值映射到unsafe class Container<T> { Dictionary<IntPtr, MyClass<T>> m_map; void Add(void* key, MyClass<T> value) { IntPtr ptr = (IntPtr)key; m_map.Add(ptr, value); } bool TryGetValue(void* key, out MyClass<T> value) { IntPtr ptr = (IntPtr)key; return m_map.TryGetValue(ptr, out value); } }

{{1}}