如何在不使用foreach的情况下将ArrayList转换为强类型通用列表?

Jam*_*ruk 56 .net c# list arraylist generic-list

请参阅下面的代码示例.我需要ArrayList一个通用列表.我不想用foreach.

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;    
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 112

请尝试以下方法

var list = arrayList.Cast<int>().ToList();
Run Code Online (Sandbox Code Playgroud)

这只能使用C#3.5编译器,因为它利用了3.5框架中定义的某些扩展方法.

  • 这只是将它放在ArrayList中的结果.只需将每个成员强制转换为int,就可以在性能方面做得最好. (7认同)

mqp*_*mqp 10

这是低效的(它不必要地创建一个中间数组)但是简洁并且可以在.NET 2.0上运行:

List<int> newList = new List<int>(arrayList.ToArray(typeof(int)));
Run Code Online (Sandbox Code Playgroud)

  • 我把`arrayList.ToArray(typeof(int))作为int []`然后它工作了谢谢!+1 (6认同)