将值插入数组的有效方法

本文关键字:有效 方法 数组 插入 | 更新日期: 2023-09-27 18:17:43

我需要插入一个值到数组…理想情况下,我可以从List<myObj>开始,但是我需要使用的方法返回myObj[]

我总是需要插入一个值到第一个位置,而不是蠕虫值已经在数组中…我想出了如下的方案。

    List<myObj> list = array.ToList<myObj>();
        if (list.Count > 0 && list != null)
        {
            list.Insert(0, InsertRecord(myParam)); // InsertRecord() is one of my methods...
        }
        return list.ToArray();
我的问题是……这有那么一点效率吗?有没有更好的方法去做我需要完成的事情?

将值插入数组的有效方法

我认为你可以节省一些时间

var newArray = new myObj[oldArray.Length  + 1];    
oldArray.CopyTo(newArray, 1);
newArray[0] = InsertRecord(myParam);

List<T>类是由数组支持的,所以在索引0处使用List插入和在索引0处使用数组插入在性能上没有区别,只是BCL开发人员已经对性能进行了更广泛的测试。不要让ToList方法和List<T>构造函数的性能受到影响,因为新的数组分配无论如何都是在后台进行的。

更糟糕的是,您可能需要两个数组分配与您发布的代码,因为List<T>构造函数(由ToList调用)可能会分配一个恰好与array大小相同的数组,然后Add方法必须分配一个新的数组来执行插入。不太可能,但有可能。

简而言之,自己分配新数组。

编辑:

如果你的方法需要返回一个数组,那么遍历一个列表就没有任何意义了。使用列表,将原始数组复制到支持List<T>的数组中,然后插入,然后将该支持数组复制到要从方法返回的另一个数组中。这使得两个数组分配最少,加上我上面提到的第三个。使用原始数组保证只分配一个数组。