How to convert an ArrayList to a strongly typed generic list without using a foreach?

岁酱吖の 提交于 2019-11-27 17:57:13

Try the following

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

This will only work though using the C# 3.5 compiler because it takes advantage of certain extension methods defined in the 3.5 framework.

This is inefficient (it makes an intermediate array unnecessarily) but is concise and will work on .NET 2.0:

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

How about using an extension method?

From 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;
    }
}

In .Net standard 2 using Cast<T> is better way:

ArrayList al = new ArrayList();
al.AddRange(new[]{"Micheal", "Jack", "Sarah"});
List<int> list = al.Cast<int>().ToList();

Cast and ToList are extension methods in the System.Linq.Enumerable class.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!