3 回答
TA贡献2011条经验 获得超2个赞
它似乎很适合通用扩展方法,并且Array.Copy有一个很好的快速解决方案
注意:这会重新创建一个数组。
给定
public static class Extensions
{
public static T[] RemoveElement<T>(this T[] source, int index)
where T : new()
{
if(index >= source.Length) throw new ArgumentOutOfRangeException(nameof(index));
// create new array
var result = new T[source.Length - 1];
// Copy the first part
Array.Copy(source, 0, result, 0, index);
// Copy the second part
Array.Copy(source, index+1, result, index, source.Length - (index+1));
return result;
}
}
用法
int[] N = new int[]{1,0,6,0,3,4};
var result = N.RemoveElement(1);
例子
public static void Main()
{
int[] N = new int[]{1,0,6,0,3,4};
Console.WriteLine(string.Join(",", N.RemoveElement(1)));
Console.WriteLine(string.Join(",", N.RemoveElement(0)));
Console.WriteLine(string.Join(",", N.RemoveElement(5)));
}
输出
1,6,0,3,4
0,6,0,3,4
1,0,6,0,3
其他资源
从指定源索引开始的 Array 中复制一系列元素,并将它们粘贴到从指定目标索引开始的另一个 Array。长度和索引指定为 32 位整数。
TA贡献1810条经验 获得超4个赞
你可以使用这个:
int[] N = new int[]{1,0,6,0,3,4};
var foos = new List<int>(N);
int indexToRemove = 1;
foos.RemoveAt(indexToRemove);
N = foos.ToArray();
foreach(int elem in N )
Console.WriteLine(elem);
仅供参考:对于高性能/频繁访问,不建议使用 linq。
- 3 回答
- 0 关注
- 151 浏览
添加回答
举报