C# 数组截取
這段時間常常需要對數據的數據進行截取,以方便解析。
原來一直用的Array.ConstrainedCopy();以及?Array.Copy();來進行數組復制截取
?
- 先看Array.ConstrainedCopy():其說明如下
?
?// 摘要:
? ? ? ? // ? ? 從指定的源索引開始,復制 System.Array 中的一系列元素,將它們粘貼到另一 System.Array 中(從指定的目標索引開始)。保證在復制未成功完成的情況下撤消所有更改。
? ? ? ? //
? ? ? ? // 參數:
? ? ? ? // ? sourceArray:
? ? ? ? // ? ? System.Array,它包含要復制的數據。
? ? ? ? //
? ? ? ? // ? sourceIndex:
? ? ? ? // ? ? 一個 32 位整數,它表示 sourceArray 中復制開始處的索引。
? ? ? ? //
? ? ? ? // ? destinationArray:
? ? ? ? // ? ? System.Array,它接收數據。
? ? ? ? //
? ? ? ? // ? destinationIndex:
? ? ? ? // ? ? 一個 32 位整數,它表示 destinationArray 中存儲開始處的索引。
? ? ? ? //
? ? ? ? // ? length:
? ? ? ? // ? ? 一個 32 位整數,它表示要復制的元素數目。
? ? ? ? //
? ? ? ? // 異常:
? ? ? ? // ? T:System.ArgumentNullException:
? ? ? ? // ? ? sourceArray 為 null。- 或 -destinationArray 為 null。
? ? ? ? //
? ? ? ? // ? T:System.RankException:
? ? ? ? // ? ? sourceArray 和 destinationArray 的秩不同。
? ? ? ? //
? ? ? ? // ? T:System.ArrayTypeMismatchException:
? ? ? ? // ? ? sourceArray 類型不同于并且不是從 destinationArray 類型派生的。
? ? ? ? //
? ? ? ? // ? T:System.InvalidCastException:
? ? ? ? // ? ? sourceArray 中的至少一個元素無法強制轉換為 destinationArray 類型。
? ? ? ? //
? ? ? ? // ? T:System.ArgumentOutOfRangeException:
? ? ? ? // ? ? sourceIndex 小于 sourceArray 的第一維的下限。- 或 -destinationIndex 小于 destinationArray
? ? ? ? // ? ? 的第一維的下限。- 或 -length 小于零。
? ? ? ? //
? ? ? ? // ? T:System.ArgumentException:
? ? ? ? // ? ? length 大于從 sourceIndex 到 sourceArray 末尾的元素數。- 或 -length 大于從 destinationIndex
? ? ? ? // ? ? 到 destinationArray 末尾的元素數。
?
- 再看Array.Copy();:
它有四個重載,都差不多,具體就不多累贅了,直接來看:
? ?
?public static void Copy(Array sourceArray, Array destinationArray, int length);
? ? ? ? // 摘要:
? ? ? ? // ? ? 從第一個元素開始復制 System.Array 中的一系列元素,將它們粘貼到另一 System.Array 中(從第一個元素開始)。長度指定為 32 位整數。
? ? ? ? //
?public static void Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length);
? ? // 摘要:
? ? ? ? // ? ? 從指定的源索引開始,復制 System.Array 中的一系列元素,將它們粘貼到另一 System.Array 中(從指定的目標索引開始)。長度和索引指定為
? ? ? ? // ? ? 32 位整數。
?
后來了解到還有一種方法可以截取,如下:
? ? ? ? ? ? data.Skip(n).Take(m).ToArray();
- data是源數組
- Skip()定義如下
- ? ?? ? ? ? public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count);
- ? ? ? ? // 摘要:
? ? ? ? // ? ? 跳過序列中指定數量的元素,然后返回剩余的元素。
? ? ? ? //
- Take定義如下:
- ? ? ? ? public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);
- ? ? ? ? // 摘要:
? ? ? ? // ? ? 從序列的開頭返回指定數量的連續元素。
? ? ? ? //
現在將這幾種方法記錄下來,主要了解的也不是很深,就不對其做什么多余的解釋說明了,以免誤導大家。
如果后續有其他方法,我會持續更新,同時也希望大家能給我更多的指點。
總結
- 上一篇: linux机械硬盘如何挂载,Linux下
- 下一篇: 详解React的Transition工作