C#学习教程:存储变量类型并在运行时使用它创建集合为了跟踪可能存储的值的类型,我创建了一个大致如下的类:privateclassDataField{publicstringFieldName;公共字符串字段类型;}在读取值进行分析时,使用这样的switch语句(简化):switch(DataField.FieldType){case"int":ListInputData=newList();//从DBbreak填充列表;case"bool":列表InputData=newList();//从DBbreak填充列表;我正在寻找一种摆脱switch语句的方法,但这意味着我需要根据类型动态创建集合。目前的类型是(天真地?)一个字符串,但我想我可以通过改变类来改进它:公共类型字段类型;}然后以某种方式动态创建集合:TypeDataType=typeof(DataField.FieldType);列表InputData=newList();//PopulatelistfromDB这当然行不通,导致类型或命名空间名称预期错误。不幸的是,我不太熟悉使用Type类,也不熟悉泛型或匿名类型,因为我正在寻找解决方案(似乎没有什么合适的)。如果每个switch语句分支的唯一区别是生成的变量集合的类型,我该如何减少代码重复?如果要在运行时创建已知类型的静态类型对象的集合,则需要使用反射。请参阅ie博客条目-这是创建列表的解决方案:publicstaticIListCreateGenericList(TypecollectionType){varlistType=typeof(List).MakeGenericType(new[]{collectionType});返回(IList)Activator.CreateInstance(listType);所以在你的例子中:TypedataType=DataField.FieldType;IListinputData=CreateGenericList(dataType);//从数据库填充列表为什么需要类型化集合?为什么不使用ArrayList?以上就是C#学习教程的全部内容:存储变量类型并在运行时使用它创建集合。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——ArrayListlist=newArrayList()list.Add(/*从数据库中读取的值*/)本文收集自互联网,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
