Подтвердить что ты не робот

В .Net, как вы преобразовываете ArrayList в строго типизированный общий список без использования 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;    
4b9b3361

Ответ 1

Попробуйте выполнить

var list = arrayList.Cast<int>().ToList();

Это будет работать только с использованием компилятора С# 3.5, поскольку он использует некоторые методы расширения, определенные в структуре 3.5.

Ответ 2

Это неэффективно (он делает ненужный промежуточный массив), но является кратким и будет работать на .NET 2.0:

List<int> newList = new List<int>(arrayList.ToArray(typeof(int)));

Ответ 3

Как использовать метод расширения?

Из 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;
    }
}