5

How to pass an array to a extension method by reference.

this is what i have tried but not working.

public static void RemoveAtIndex(ref this int[] arr, int index)
Abdul Basit
  • 712
  • 2
  • 19
  • 37

2 Answers2

5

You can't send extension's target object by ref. Do you relly need it? Is array replaced by the new one by the extension method?

Viacheslav Smityukh
  • 5,652
  • 4
  • 24
  • 42
-1

Linq is used to return data, not to change data. With a little different approach you replace the complete array and not changing the array.

First add this little extension method:

public static class Extensions
{
    public static IEnumerable<T> SkipAt<T>(this IEnumerable<T> source, int index)
    {
        return source.Where((it, i) => i != index);
    }
}

Then you could do it the "Linq way":

var a = new[] {1,2,3};
a = a.SkipAt(1).ToArray();
Alex Siepman
  • 2,499
  • 23
  • 31