В C# 8 добавили Ranges, можно сделать так:
string[] a = { "a", "b", "c", "d" };
var b = a[0..2]; //["a", "b"]
var c = a[1..3];
Старые способы:
- С помощью LINQ:
string[] a = { "a", "b", "c", "d" };
var b = a.Take(2).ToArray(); //["a", "b"], если нужно пропустить, например, 1 элемент, то перед Take можно использовать Skip (см. пример для переменной c).
var c = a.Skip(1).Take(2).ToArray(); //["b", "c"]
- С помощью ArraySegment:
string[] a = { "a", "b", "c", "d" };
var b = new ArraySegment<string>(a, 0, 2).ToArray(); //["a", "b"]
var c = new ArraySegment<string>(a, 1, 2).ToArray(); //["b", "c"]
- С помощью копирования массива:
public static class ArraySliceExtension
{
public static T[] ArraySlice<T>(this T[] array, int offset, int size)
{
var result = new T[size];
Array.Copy(array, offset, result, 0, size);
return result;
}
}
string[] a = { "a", "b", "c", "d" };
var b = a.ArraySlice(0, 2); //["a", "b"]
var c = a.ArraySlice(1, 2); //["b", "c"]