Subset of Array in C#

Viewed 80993

If I have an array with 12 elements and I want a new array with that drops the first and 12th elements. For example, if my array looks like this:

__ __ __ __ __ __ __ __ __ __ __ __
a  b  c  d  e  f  g  h  i  j  k  l
__ __ __ __ __ __ __ __ __ __ __ __

I want to either transform it or create a new array that looks like

__ __ __ __ __ __ __ __ __ __

b  c  d  e  f  g  h  i  j  k 
__ __ __ __ __ __ __ __ __ __

I know I can do it by iterating over them. I was just wondering if there was a cleaner way built into C#.

**UPDATED TO FIX A TYPO. Changed 10 elements to 12 elements.

9 Answers

C# 8 has a Range and Index type

char[] a = { 'a', 'b', 'c',  'd',  'e',  'f',  'g',  'h',  'i',  'j',  'k',  'l' };
Index i1 = 1;  // number 1 from beginning
Index i2 = ^1; // number 1 from end
var slice = a[i1..i2]; // { 'b','c','d','e','f','g','h','i','j' }

Using the ReadOnlySpan struct the code of the substr for array may look like following:

var subArray = input.AsSpan(offset, length).ToArray();
Related