我想创建一个字典,其中键类型是整数,值类型是我当前正在执行的类的类型。
我尝试了以下方法:
Dim col as new Dictionary(Of Integer, Me.GetType())
但我收到一条错误消息,指出 `keyword 没有命名类型。
如何根据执行类的类型创建字典?
我想创建一个字典,其中键类型是整数,值类型是我当前正在执行的类的类型。
我尝试了以下方法:
Dim col as new Dictionary(Of Integer, Me.GetType())
但我收到一条错误消息,指出 `keyword 没有命名类型。
如何根据执行类的类型创建字典?
创建类型字典的 C# 示例int
。
使用的方法:
问题主要是以某种类型安全的方式表达结果类型。Dictionary
万一有人可能求助于,IDictionary
或继续使用反射来操纵对象。
也有可能以某种方式用通用代码表达大多数操作,这些通用代码由更多反射调用MakeGenericMethod
样本:
var myType = typeof(Guid); // some type
// get type of future dictionary
Type generic = typeof(Dictionary<,>);
Type[] typeArgs = { typeof(int), myType };
var concrete = generic.MakeGenericType(typeArgs);
// get and call constructor
var constructor = concrete.GetConstructor(new Type[0]);
var dictionary = (IDictionary)constructor.Invoke(new object[0]);
// use non-generic version of interface to add items
dictionary.Add(5, new Guid());
Console.Write(dictionary[5]);
// trying to add item of wrong type will obviously fail
// dictionary.Add(6, "test");
只需使用类名Dim col as new Dictionary(Of Integer, MyClass)
另一方面,不使用整数作为键会让人感到困惑,因为字典也使用整数作为索引。如果键是连续的整数,那么列表可能会更好。