AddingElementstoarray我正在从数据库中读取数据。a]我需要在数组中再添加一个元素。获得数组后,我将创建一个容量为n+1的新数组,并将所有元素复制到新数组,并将新元素作为数组的最后一个元素。我可以做这个。有没有更好的办法?特别是林克?你描述的实际上是唯一的方法。.NET中不能调整数组的大小,因此我们必须分配一个新数组并将旧数组复制到其中。例如,这就是Array.Resize的工作原理。LINQ在这里并没有真正的帮助,如果有的话,它只是将现有数组转换为一个新数组——这正是我们刚才描述的。如果您发现需要经常调整数组的大小,则应考虑使用ArrayList,或者如果可能,使用强类型列表。编辑:如果你只是从某种方法获取数组并且无法控制,但在你的代码中你可以使用IEnumerable,你可以使用LINQ来延迟枚举并保存额外的数组分配:varmySequence=originalArray.Concat(new[]{myobj});//snipforeach(variteminmySequence){//dostuff}只有在调用ToArray()时才会产生额外的开销。否则,我们只是对原始数组进行一次枚举,然后在末尾隐藏额外的项。如果要使用LINQ将数组放在一起,可以使用Concat:varcombined=array1.Concat(new[]{element}).ToArray();但是,您现在正在为集合创建许多不同的数组。更好的选择是使用列表。它将由单个阵列支持并自动扩展。C#yield(不需要额外的存储空间)使用C#yield,您可以返回数组等而无需分配额外的存储空间。在生成原始数组的每个元素之后,您可以轻松地插入任何额外的元素:IEnumerableGetEverything(){//首先返回整个原始数组foreach(intnuminarrNumbers)yieldreturnnum;//然后在最后插入额外的元素yieldreturn5;//如果你想产生更多的元素...}然后你可以像这样使用它:foreach(intninGetEverything())Console.WriteLine(n);在这种情况下,没有必要退出LINQ,因为yield语句很简单并且非常适合您的需要。您可以使用该数组来初始化列表。varstuff=new列表(a);stuff.Add(更多的东西);您可以使用Array.Resize:http://msdn.microsoft.com/en-us/library/bb348051.aspx这基本上是您手动执行的操作,但更整洁一些。如果您经常向数组添加多个元素,我建议您改用列表,因为它的插入效率更高。请改用List,并调用myList.Add(item)编辑:如果您的意思是将数据作为数组(而不是将数据读入其中),请使用List的构造函数从数组中复制。您可以使用ToArray和ToListLinq命令。这是一个通用方法,它将返回一个新数组,该数组将是新项目的原始副本。publicstaticT[]AddItem(T[]array,Titem){Listlist=array.ToList();list.Add(项目);返回列表.ToArray();这是一种将项目添加到数组通用扩展方法的方法。(数组在内存中会是一个新的,所以可能会有副作用)。publicstaticvoidAddItem(thisT[]array,Titem){Listlist=array.ToList();list.Add(项目);array=list.ToArray();/*未经测试,这可能无法编译!*/}你可以使用这样的东西,如果你有相同类型的数组{ArrayVar1,ArrayVar2}vararrayList=ArrayVar1.ToList();arrayList.AddRange(ArrayVar2);//或者对于单个元素使用arrayList.Add(Var2);ArrayVar1=arrayList.ToArray();使用数组方法Resize和ConstrinedCopy的示例。无需制作额外的阵列。以上就是C#学习教程:给数组添加元素的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注—Filter[]filterA=newFilter[]{newFilter(){field="trans_date",Data="2018-01-01",Op="gt"},newFilter(){field="trans_date",Data="2018-01-02",Op="gt"},newFilter(){field="trans_date"",Data="2018-01-03",Op="gt"}};Filter[]filterB=newFilter[]{newFilter(){field="trans_date",Data="2018-01-04",Op="gt"},newFilter(){field="trans_date",Data="2018-01-05",Op="gt"}};//调整原始数组的大小以容纳所有新元素。Array.Resize(reffilterA,filterA.Length+filterB.Length);//从filterB中取出项目并将它们放入filterAArray.ConstrainedCopy(filterB,0,filterA,3,2);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
