【发布时间】:2020-04-05 15:52:43
【问题描述】:
给定一个一维数组,
double[] arr = { 4, 3, 2, 8, 7, 6, 1 };
我想从第二个索引到最后一个获取值,并且想将数组存储在一个变量中。 想要得到这样的东西:
new_arr = {3, 2, 8, 7, 6, 1 }; //first element sliced
【问题讨论】:
给定一个一维数组,
double[] arr = { 4, 3, 2, 8, 7, 6, 1 };
我想从第二个索引到最后一个获取值,并且想将数组存储在一个变量中。 想要得到这样的东西:
new_arr = {3, 2, 8, 7, 6, 1 }; //first element sliced
【问题讨论】:
您可以使用 C# 8 indices and ranges 功能
double[] arr = { 4, 3, 2, 8, 7, 6, 1 };
var slice = arr[1..];
它将返回从索引 1 到数组末尾的所有项目,并为您提供预期的切片 {3, 2, 8, 7, 6, 1 }。同样,它仅适用于 C# 8 和 .NET Core 3.x。
对于最早的 C# 版本,您应该自己执行此操作,例如使用 Array.Copy 或 System.Linq
double[] arr = { 4, 3, 2, 8, 7, 6, 1 };
var slice = arr.Skip(1).ToArray();
【讨论】:
如果您使用的是 C# 8,则可以使用 Indices & Range。它是这样的:
var newArray = oldArray[1..]; // Takes everything from index 1 until the end.
【讨论】:
您可以使用 Linq 跳过第一个项目并采取其余的。这将为您提供序列:
arr.Skip(1);
你可以像这样转换成一个新的数组:
var new_arr = arr.Skip(1).ToArray();
【讨论】: