在.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; } }