Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Virtually shifting an array

Tags:

arrays

c#

I am using C#. I have an array of size 10. I want to pass it to a function, but only from the second element. In C, this is how I would implement it

myfunc( myarray + 1 )

Effectively I am virtually shifting the array / deleting the first element.

How do I implement this in C# ?

like image 429
UKM Avatar asked Apr 28 '26 09:04

UKM


2 Answers

If you're using .NET 3.5, the easiest is to use Skip(1) then convert back to an array.

myFunc(myArray.Skip(1).ToArray());

If performance is an issue then you will either need to construct a new array manually or change your function to accept an index parameter.

like image 82
Mark Byers Avatar answered Apr 29 '26 22:04

Mark Byers


There are four options here:

  1. Pass in an index, and use that in your function
  2. Make your function use IEnumerable<T> instead of an array (T[]), then use myArray.Skip(1).
  3. Use skip, but convert back to an array. This copies the array elements, however.
  4. Use an ArraySegment<T> instead of an array for your function.

This really depends on whether you have control over the usage within your myfunc function. If that function must accept an array, and you can't pass an index, you're going to be stuck creating a copy of the array.

like image 24
Reed Copsey Avatar answered Apr 29 '26 21:04

Reed Copsey



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!