如何在不使用 foreach 的情况下将 ArrayList 转换为强类型通用列表?

发布于 2024-07-18 03:18:41 字数 333 浏览 10 评论 0原文

请参阅下面的代码示例。 我需要 ArrayList 成为通用列表。 我不想使用foreach

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;    

See the code sample below. I need the ArrayList to be a generic List. I don't want to use foreach.

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;    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

梦与时光遇 2024-07-25 03:18:41

尝试以下方法

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

这只能在使用 C# 3.5 编译器时有效,因为它利用了 3.5 框架中定义的某些扩展方法。

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.

梦言归人 2024-07-25 03:18:41

这是低效的(它不必要地生成中间数组),但很简洁并且可以在 .NET 2.0 上工作:

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

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)));
和影子一齐双人舞 2024-07-25 03:18:41

使用扩展方法怎么样?

来自 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;
    }
}

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;
    }
}
浅听莫相离 2024-07-25 03:18:41

在 .Net 标准 2 中,使用 Cast 是更好的方法:

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

CastToListSystem.Linq.Enumerable 类中的扩展方法。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文