当前位置: 首页 > 编程语言 > C#

如何将Ilist转为ArrayList?分享

时间:2023-04-10 14:22:58 C#

Ilist如何转成ArrayList?我可以将IList转换为ArrayList吗?如果是,我该怎么办?IListalls=RetrieveCourseStudents(cf);ArrayLista=(ArrayList)alls;是对的吗?错误:无法转换类型的对象这都是关于多态性的。ArrayList是接口IList的一个实现。IListiList=newArrayList();变量iList中的静态类型是IList,但是它引用的是一个ArrayList对象!没有从IList到ArrayList的真正转换,因为您不能从接口或抽象类实例化/创建对象。正如评论中所建议的,您应该考虑使用泛型集合Liststudents=RetrieveCourseStudents(cf).Cast().ToList()如果它已经是ArrayList,则只能将所有转换为ArrayList,即RetrieveCourseStudents返回的对象是一个数组列表。如果不是那么你需要创建一个新对象,幸运的是ArrayList有一个构造函数可以做到这一点:newArrayList(RetrieveCourseStudents(cf))值得注意的是你现在应该使用泛型(例如List)而不是ArrayList,所以除非你需要与一些无法更新的旧代码进行交互,我会远离它。是的,只有当RetrieveCourseStudents(cf)返回Arraylist的类型时,我们才能将IList转换为ArrayList。例如staticvoidMain(string[]args){IListtest1=GetList();IListtest2=GetIList();ArrayListlist1=(ArrayList)test1;//失败ArrayListlist2=(ArrayList)test2;//通过Console.ReadKey();}privatestaticIListGetIList(){returnnewArrayList();}privatestaticIListGetList(){returnnewCustomList();由于您评论说您只想对返回的列表进行排序(在另一条评论中,您说的是EntityCollection类型)-您不需要转换为ArrayList并直接使用该值。您可以使用OrderByLINQ扩展方法(以及您正在使用的变量类型-IList也不起作用)。这将满足您的需要(CourseStudentProperty是CourseStudentProperty的属性):varalls=RetrieveCourseStudents(cf);varorderedAlls=alls.OrderBy(cs=>cs.CourseStudentProperty);使用系统;使用系统集合;使用System.Collections。通用的;namespaceMyILists{classProgram{staticvoidMain(string[]args){IListintArrayList=newArrayList().ToIList();intArrayList.Add(1);intArrayList.Add(2);//intArrayList.Add("示例文本");//不会编译foreach(intmyIntinintArrayList){Console.WriteLine("Number:"+myInt.ToString());}控制台.Read();}}publicstaticclassMyExtensions{publicstaticIListToIList(thisArrayListarrayList){IListlist=newList(arrayList.Count);foreach(TinstanceinarrayList){list.Add(instance);}返回列表;}}}只需使用这个简单的代码:)(FromxInlist).ToArray您可以使用LINQUnion扩展。请注意,您可以将任何类型的IEnumerable与此技术(数组、IList等)结合使用,因此您无需担心“添加”方法。您必须了解LINQ会产生不可变的结果,因此如果您想随后操作集合,则需要使用“ToList()”、“ToDictionary()”或其他任何东西。varlist=(IList)new[]{newStudent{FirstName="Jane"},newStudent{FirstName="Bill"},};varallStudents=list.Union(new[]{newStudent{FirstName="Clancey"}}).OrderBy(s=>s.FirstName).ToList();allStudents[0].FirstName="比利";foreach(varsinallStudents){Console.WriteLine("FirstName={0}",s.FirstName);}输出:以上是C#学习教程:如何将Ilist转换为ArrayList?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——FirstName=BillyFirstName=ClanceyFirstName=Jane不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: