我是C#的新手(以前使用的是C ++),我曾经将数组传递给具有特定索引的函数。这是C ++中的代码,
void MyFunc(int* arr) { /*Do something*/ }
//In other function
int myArray[10];
MyFunc(&myArray[2]);
我可以在C#.Net * 中做这样的事情吗? *
答案 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的详细信息,请参阅此处!