Arraylist to list <t>使用.Net?</t>

时间:2010-08-02 19:10:59

标签: .net asp.net generics arraylist

如何将arraylist转换/转储到列表中?我正在使用arraylist,因为我正在使用ASP.NET配置文件功能,在配置文件中存储List看起来很痛苦。

注意: 另一种选择是将List包装到自己的类中并取消ArrayList。

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

4 个答案:

答案 0 :(得分:26)

转换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);

答案 1 :(得分:4)

如果您使用的是.NET 3.5或更高版本,则可以使用Linq。 using System.Linq;

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

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

否则,您必须将所有值复制到新列表中。

答案 2 :(得分:2)

ArrayList a = new ArrayList();

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

a.CopyTo(array);

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

否则,您只需要对arrayList进行循环并将其添加到新列表中。

答案 3 :(得分:0)

这也适用于Framework&lt; 3.5;

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)));