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

在C#中追加数组的最有效方法?

如何解决《在C#中追加数组的最有效方法?》经验,为你挑选了6个好方法。

我以双打数组的形式从旧式ActiveX中提取数据.我最初并不知道我将实际检索的样本的最终数量.

将这些数组连接到系统中时,将这些数组连接在一起的最有效方法是什么?



1> Jon Skeet..:

您不能附加到实际数组 - 数组的大小在创建时是固定的.相反,使用List可以根据需要增长的东西.

或者,保留一个数组列表,只有当你抓住所有数据时才将它们连接起来.

请参阅Eric Lippert关于数组的博客文章,了解更多详细信息和洞察力,而不是我可以实际提供的:)



2> Michael Bahi..:

我相信如果你有2个相同类型的数组要组合成第三个数组,那么有一个非常简单的方法.

这是代码:

String[] theHTMLFiles = Directory.GetFiles(basePath, "*.html");
String[] thexmlFiles = Directory.GetFiles(basePath, "*.xml");
List finalList = new List(theHTMLFiles.Concat(thexmlFiles));
String[] finalArray = finalList.ToArray();



3> GeorgePotter..:

我建议在这里找到答案:如何在C#中连接两个数组?

例如

var z = new int[x.Length + y.Length];
x.CopyTo(z, 0);
y.CopyTo(z, x.Length);



4> 小智..:

使用.Net 4标准的linq扩展,连接数组很简单

要记住的最大的事情是linq与IEnumerable对象一起工作,所以为了得到一个数组作为你的结果然后你必须使用最后的.ToArray()方法

连接两个字节数组的示例:

byte[] firstArray = {2,45,79,33};
byte[] secondArray = {55,4,7,81};
byte[] result = firstArray.Concat(secondArray).ToArray();



5> 小智..:

该解决方案看起来非常有趣,但可以在两个语句中连接数组.当您处理大字节数组时,我认为使用链接列表来包含每个字节是低效的.

下面是一个代码示例,用于从流中读取字节并动态扩展字节数组:

    byte[] buf = new byte[8192];
    byte[] result = new byte[0];
    int count = 0;
    do
    {
        count = resStream.Read(buf, 0, buf.Length);
        if (count != 0)
        {
            Array.Resize(ref result, result.Length + count);
            Array.Copy(buf, 0, result, result.Length - count, count);
        }
    }
    while (count > 0); // any more data to read?
    resStream.Close();



6> SGRao..:

使用这个我们可以添加两个数组没有任何循环.

我相信如果你有两个相同类型的数组要组合成一个数组,那么有一个非常简单的方法.

这是代码:

String[] TextFils = Directory.GetFiles(basePath, "*.txt");
String[] ExcelFils = Directory.GetFiles(basePath, "*.xls");
String[] finalArray = TextFils.Concat(ExcelFils).ToArray();

要么

String[] Fils = Directory.GetFiles(basePath, "*.txt");
String[] ExcelFils = Directory.GetFiles(basePath, "*.xls");
Fils = Fils.Concat(ExcelFils).ToArray();

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