从C#.Net中的特定索引传递数组

时间:2011-04-26 09:41:56

标签: c# .net arrays

我是C#的新手(以前使用的是C ++),我曾经将数组传递给具有特定索引的函数。这是C ++中的代码,

void MyFunc(int* arr) { /*Do something*/ }

//In other function
int myArray[10];
MyFunc(&myArray[2]);

我可以在C#.Net * 中做这样的事情吗? *

5 个答案:

答案 0 :(得分:5)

由于Array是Enumerable,您可以使用LINQ function Skip

void MyFunc( int[] array ){ /*Do something*/ }

int[] myArray = { 0, 1, 2, 3, 4, 5, 6 }
MyFunc( myArray.Skip(2) );

答案 1 :(得分:0)

linq版本是我的首选版本。然而,它将被证明非常低效。

你可以做到

int myArray[10];
int mySlice[8];
Array.Copy(myArray, 2, mySlice, 0);

并将mySlice传递给函数

答案 2 :(得分:0)

.NET具有System.ArraySegment<T>结构,可以解决这个确切的用例。

但是我从来没有真正看到代码中使用过这种结构,原因很简单:它不起作用。值得注意的是,它没有实现任何接口,例如IEnumerable<T>。 Linq解决方案(=使用Skip)因此是最佳选择。

答案 3 :(得分:0)

最简单的方法可能是:

public void MyFunction(ref int[] data,int index)
    {
        data[index]=10;
    }

通过这种方式调用它:

int[] array= { 1, 2, 3, 4, 5 };
Myfunction(ref array,2);
foreach(int num in array)
    Console.WriteLine(num);

这将打印1,2,10,4,5

答案 4 :(得分:-2)

public void MyFunc(ref int[] arr)
{
    // Do something
}

int[] myArray = .... ;
MyFunc(ref myArray);

有关ref的详细信息,请参阅此处!