5

如何通过引用将数组传递给扩展方法。

这是我尝试过但不起作用的方法。

public static void RemoveAtIndex(ref this int[] arr, int index)
4

2 回答 2

5

您不能通过 ref 发送扩展的目标对象。你真的需要它吗?数组是否被扩展方法替换为新数组?

于 2013-08-07T05:12:58.030 回答
-1

Linq 用于返回数据,而不是更改数据。使用稍微不同的方法,您可以替换整个数组而不是更改数组。

首先添加这个小扩展方法:

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

然后你可以用“Linq 方式”来做:

var a = new[] {1,2,3};
a = a.SkipAt(1).ToArray();
于 2013-08-07T19:11:00.557 回答