在.Net中,如何将ArrayList转换为强types的通用列表而不使用foreach?
请参阅下面的代码示例。 我需要ArrayList
是一个通用的列表。
ArrayList arrayList = GetArrayListOfInts(); List<int> intList = new List<int>(); //Can this foreach be condensed into one line? foreach (int number in arrayList) { intList.Add(number); } return intList;
尝试以下
var list = arrayList.Cast<int>().ToList();
这只会使用C#3.5编译器,因为它利用了3.5框架中定义的某些扩展方法。
这是效率低下(它使不必要的中间数组),但简洁,将在.NET 2.0上工作:
List<int> newList = new List<int>(arrayList.ToArray(typeof(int)));
如何使用扩展方法?
从http://www.dotnetperls.com/convert-arraylist-list :
using System; using System.Collections; using System.Collections.Generic; static class Extensions { /// <summary> /// Convert ArrayList to List. /// </summary> public static List<T> ToList<T>(this ArrayList arrayList) { List<T> list = new List<T>(arrayList.Count); foreach (T instance in arrayList) { list.Add(instance); } return list; } }