c# - 向数组添加元素

标签 c# .net linq arrays

我正在以数组形式从源中读取数据。一个[n]

我需要向数组中添加一个元素。

获取数组后,我创建一个容量为 n+1 的新数组,并将所有元素复制到新数组并将新元素作为数组的最后一个元素。

我能做到。

有更好的方法吗?尤其是 Linq?

最佳答案

您所描述的确实是唯一的方法。在 .NET 中无法调整数组的大小,因此我们必须分配一个新数组并将旧数组复制到其中。例如,这是 Array.Resize 的方式作品。 LINQ 在这里并不是真正的帮助,如果有帮助,它也只是将现有数组投影到一个新数组中 - 这正是我们刚刚描述的。

如果您发现需要经常调整数组大小,您应该考虑使用 ArrayList或者,如果可能的话,强类型 List<T> .

编辑: 如果你只是从一些你无法控制的方法中获取一个数组,但在你的代码中你可以使用 IEnumerable<T>相反,您可以使用 LINQ 进行惰性枚举并节省额外的数组分配:

var mySequence = originalArray.Concat(new[]{myobj});

//snip

foreach(var item in mySequence)
{
    //do stuff
}

只有在调用ToArray()时才有我们招致了额外的开销。否则,我们只是简单地对原始数组进行一次枚举,然后在末尾偷偷插入额外的项。

关于c# - 向数组添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3146195/

相关文章:

c# - ado.net 的 Microsoft Sync 框架可以与 Java 一起使用吗?

c# - 为什么这个对象的类型通过反射显示没有接口(interface),尽管至少实现了两个?

c# - 如何分割在 foreach 循环中迭代的元素

c# - 使用 Linq 的 foreach 循环条件

c# - 分隔后从较大的字符串创建字符串数组

C# 从多个线程更新 TextBox

c# - 限制在 C# 中使用泛型创建子表单

c# - 如何取消和回滚 VS2010 Windows Installer 中的自定义操作?

.net - SqlTransaction 是否需要调用 Dispose?

c# - 下拉大小设置未采用