Reputation: 305
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# ?
Upvotes: 3
Views: 122
Reputation: 564851
There are four options here:
IEnumerable<T>
instead of an array (T[]
), then use myArray.Skip(1)
.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.
Upvotes: 4
Reputation: 839114
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.
Upvotes: 4
Reputation: 134255
You could pass an index to the function also, and only access the array beginning at that index.
Upvotes: 1