几乎移动一个阵列

时间:2010-03-25 23:59:20

标签: c# arrays

我正在使用C#。 我有一个大小为10的数组。我想将它传递给一个函数,但只能从第二个元素传递给它。在C中,这是我实现它的方式

myfunc(myarray + 1)

实际上,我实际上正在移动数组/删除第一个元素。

如何在C#中实现它?

3 个答案:

答案 0 :(得分:4)

如果您使用的是.NET 3.5,最简单的方法是使用Skip(1)然后转换回数组。

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

如果性能存在问题,那么您需要手动构建新数组或更改函数以接受索引参数。

答案 1 :(得分:4)

这里有四个选项:

  1. 传入索引,并在函数中使用
  2. 使用IEnumerable<T>代替数组(T[]),然后使用myArray.Skip(1)
  3. 使用skip,但转换回数组。但是,这会复制数组元素。
  4. 为您的功能使用ArraySegment<T>而不是数组。
  5. 这实际取决于您是否可以控制myfunc功能中的使用情况。如果该函数必须接受一个数组,并且您无法传递索引,那么您将无法创建该数组的副本。

答案 2 :(得分:1)

您也可以将索引传递给函数,并且只能从该索引开始访问数组。