我正在从源读取数据作为数组。一个]
我需要向数组中再添加一个元素。
获得数组后,我创建一个容量为 n+1 的新数组,并将所有元素复制到新数组中,并将新元素作为数组的最后一个元素。
我可以做这个。
有一个更好的方法吗?尤其是 Linq?
您所描述的实际上是唯一的方法。数组无法在 .NET 中调整大小,因此我们必须分配一个新数组并将旧数组复制到其中。例如,这是如何Array.Resize
作品。 LINQ 在这里并没有真正的帮助,如果有的话,它只是将现有数组投影到一个新数组中 - 这正是我们刚才所描述的。
如果您发现需要经常调整数组大小,您应该考虑使用ArrayList
或者,如果可能的话,强类型List<T>
.
Edit:
如果您只是从某些您无法控制的方法获取数组,但在代码中您可以使用IEnumerable<T>
相反,您可以使用 LINQ 进行延迟枚举并节省额外的数组分配:
var mySequence = originalArray.Concat(new[]{myobj});
//snip
foreach(var item in mySequence)
{
//do stuff
}
只有打电话的时候才这样ToArray()
我们承担了额外的开销。否则,我们只是对原始数组进行一次枚举,然后在最后偷偷添加额外的项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)