0

我想创建一个字典,其中键类型是整数,值类型是我当前正在执行的类的类型。

我尝试了以下方法:

Dim col as new Dictionary(Of Integer, Me.GetType())

但我收到一条错误消息,指出 `keyword 没有命名类型。

如何根据执行类的类型创建字典?

4

2 回答 2

4

创建类型字典的 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");
于 2013-06-21T05:22:44.660 回答
0

只需使用类名Dim col as new Dictionary(Of Integer, MyClass)

另一方面,不使用整数作为键会让人感到困惑,因为字典也使用整数作为索引。如果键是连续的整数,那么列表可能会更好。

于 2013-06-21T07:29:06.217 回答