首先,这是我的第一个问题,如果我做错了,请告诉我。
我正在为Unity制作一些有点复杂的C#脚本,目前我需要从未知类型的指针到类型的对象实例的字典映射,具体取决于键指针的类型:
(void* => MyClass<T>)
其中T是每个条目的键指针的目标类型。
首先,我应该如何指定密钥类型? void *似乎无效。
其次,是否有一种优雅的方式来指定类型绑定?否则我可能会即兴发挥解决方案。
答案 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}}