Arraylist для перечисления <t>с использованием .Net? - PullRequest
12 голосов
/ 02 августа 2010

Как я могу преобразовать / вывести массив в список?Я использую arraylist, потому что я использую функцию профилей ASP.NET, и это выглядело как боль для хранения List в профилях.

Примечание. Другой вариант - заключить List в собственный класс ипокончить с ArrayList.

http://www.ipreferjim.com/site/2009/04/storing-generics-in-asp-net-profile-object/

Ответы [ 4 ]

26 голосов
/ 02 августа 2010

Самый простой способ преобразовать ArrayList полный объектов типа T был бы следующим (при условии, что вы используете .NET 3.5 или выше):

List<T> list = arrayList.Cast<T>().ToList();

Если вы используете 3.0 или более раннюю версию, вам придется зацикливаться:

List<T> list = new List<T>(arrayList.Count);

foreach(T item in arrayList) list.Add(item);
4 голосов
/ 02 августа 2010

Вы можете использовать Linq, если вы используете .NET 3.5 или выше. using System.Linq;

ArrayList arrayList = new ArrayList();
arrayList.Add( 1 );
arrayList.Add( "two" );
arrayList.Add( 3 );

List<int> integers = arrayList.OfType<int>().ToList();

В противном случае вам придется скопировать все значения в новый список.

2 голосов
/ 02 августа 2010
ArrayList a = new ArrayList();

object[] array = new object[a.Count];

a.CopyTo(array);

List<object> list = new List<object>(array);

В противном случае вам просто нужно будет выполнить цикл над вашим arrayList и добавить его в новый список.

0 голосов
/ 02 августа 2010

Это работает и в Framework <3.5: </p>

Dim al As New ArrayList()
al.Add(1)
al.Add(2)
al.Add(3)
Dim newList As New List(Of Int32)(al.ToArray(GetType(Int32)))

C #

List<int> newList = new List<int>(al.ToArray(typeof(int)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...