Ответ 1
Попробуйте выполнить
var list = arrayList.Cast<int>().ToList();
Это будет работать только с использованием компилятора С# 3.5, поскольку он использует некоторые методы расширения, определенные в структуре 3.5.
См. пример кода ниже. Мне нужно, чтобы 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();
Это будет работать только с использованием компилятора С# 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;
}
}