更优雅的方式来增加一个int-array?

Ole*_*ers 3 c# arrays list

我有一个具有多个值的int数组.我必须向该数组添加一个元素.我会这样解决:

int[] myIntArray=SomeMagicThere();

List<int> intList= myIntArray.ToList();
intList.Add(88);
myIntArray= intList.ToArray();
Run Code Online (Sandbox Code Playgroud)

(这很简单,我有理由不能改变myIntArray的类型)

你会以另一种方式解决它吗?做两个演员阵容感觉有点"脏"

Raw*_*ing 9

规范的方式是

Array.Resize(ref myIntArray, myIntArray.Length + 1);
myIntArray[myIntArray.Length - 1] = 88;
Run Code Online (Sandbox Code Playgroud)

LINQ版本不会执行与您相同数量的阵列副本

myIntArray = myIntArray.Concat(new[] { 88 }).ToArray();
Run Code Online (Sandbox Code Playgroud)

编辑:这个LINQ版本实际上比你原来的慢!LINQ数组到列表和列表到数组被优化为直接数组副本,而ConcatLINQ不再知道序列有多长,因此在达到内部缓冲区容量时会产生多个数组大小和副本.

(我假设您必须使用数组,因为您似乎已经熟悉了列表.)