我有一个具有多个值的int数组.我必须向该数组添加一个元素.我会这样解决:
int[] myIntArray=SomeMagicThere();
List<int> intList= myIntArray.ToList();
intList.Add(88);
myIntArray= intList.ToArray();
Run Code Online (Sandbox Code Playgroud)
(这很简单,我有理由不能改变myIntArray的类型)
你会以另一种方式解决它吗?做两个演员阵容感觉有点"脏"
规范的方式是
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数组到列表和列表到数组被优化为直接数组副本,而Concat
LINQ不再知道序列有多长,因此在达到内部缓冲区容量时会产生多个数组大小和副本.
(我假设您必须使用数组,因为您似乎已经熟悉了列表.)