我想创建一个泛型List<>,其类型在运行时声明。
我可以这样做,但由于它是动态的,我怀疑会有速度惩罚。我正在编写一个外部数据库的包装器,因此速度非常关键。
我可以这样做,但由于它是动态的,我怀疑会有速度惩罚。我正在编写一个外部数据库的包装器,因此速度非常关键。
List<dynamic> gdb = new List<dynamic>()
我在动态泛型类型中阅读了this post,但无法使其工作。具体来说,该对象未显示为List,因此没有add方法。
Type ac;
switch (trail[dataPos].Type)
{
case GlobalsSubscriptTypes.Int32:
ac = typeof(System.Int32);
break;
case GlobalsSubscriptTypes.Int64:
ac = typeof(System.Int64);
break;
default:
ac = typeof(System.String);
break;
}
var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(ac);
var gdb = Activator.CreateInstance(specificListType);
我该如何让gdb出现在以下选项中之一:
List<System.Int32>
List<System.Int64>
List<System.String>
List<object>
可能会更容易。如果类型在编译时未知,则泛型提供的编译时检查对您没有任何帮助。 - ServyList<dynamic> d
和List<object> o
。然后继续赋值int i = d[0];
和int j = (int)o[0];
如果列表包含int
,那么j
赋值肯定更快,如果列表包含隐式可转换为int
的内容,则 'j' 赋值根本不起作用,而 'i' 则会起作用。 - jbtule