如何将arraylist转换/转储到列表中?我正在使用arraylist,因为我正在使用ASP.NET配置文件功能,在配置文件中存储List看起来很痛苦。
注意: 另一种选择是将List包装到自己的类中并取消ArrayList。
http://www.ipreferjim.com/site/2009/04/storing-generics-in-asp-net-profile-object/
答案 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)));