当前位置:  开发笔记 > 编程语言 > 正文

将IEnumerable <T>转换为T []的最佳方法

如何解决《将IEnumerable<T>转换为T[]的最佳方法》经验,为你挑选了2个好方法。

从通用IEnumerable实现转换为T数组的最佳方法是什么?我目前的解决方案如下所示:

IEnumerable foo = getFoo();
string[] bar = new List(foo).ToArray();

通过一个List似乎不必要的转移,但我还没有找到一个更好的方法来做到这一点.

注意:我在这里使用C#2.0.



1> casperOne..:

.NET 3.0及之后:

调用ToArray扩展方法上IEnumerable,它几乎与下面相同的,执行型嗅探和其他一些优化.

.NET 2.0及之前版本:

一般来说,使用a List进行初始化IEnumerable然后调用ToArray可能是最简单的方法.

该用于构造List将检查IEnumerable,看它是否实现ICollection获得项目数正确初始化列表的能力.如果没有,它将正常扩展.

当然,您可能最终List只是为了转换IEnumerable而创建了许多实例T[].为此,您可以编写自己的方法,但实际上只是复制List已存在的代码.



2> Rob McCready..:

做一点.NET反射器看起来像Linq ToArray扩展方法基本上和通过List <>传递IEnumerable一样.Buffer类是内部的,但行为看起来与List <>非常相似.

public static TSource[] ToArray(this IEnumerable source)
{
    if (source == null)
    {
        throw Error.ArgumentNull("source");
    }
    Buffer buffer = new Buffer(source);
    return buffer.ToArray();
}

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有