[英]Pass array to function from specific index in C# .Net
我是C#的新手(之前在C ++上工作),我曾经将数组传递给具有特定索引的函数。 这是C ++中的代码,
void MyFunc(int* arr) { /*Do something*/ }
//In other function
int myArray[10];
MyFunc(&myArray[2]);
我可以在C#.Net *中做这样的事 吗? *
由于Array是Enumerable,您可以使用LINQ函数Skip
。
void MyFunc( int[] array ){ /*Do something*/ }
int[] myArray = { 0, 1, 2, 3, 4, 5, 6 }
MyFunc( myArray.Skip(2) );
linq版本是我的首选版本。 然而,它将被证明是非常低效的。
你可以做到
int myArray[10];
int mySlice[8];
Array.Copy(myArray, 2, mySlice, 0);
并将mySlice传递给该函数
.NET具有System.ArraySegment<T>
结构,该结构解决了这个确切的用例。
但我从来没有真正看到代码中使用的这种结构,有充分的理由: 它不起作用 。 值得注意的是,它没有实现任何接口,如IEnumerable<T>
。 Linq解决方案(=使用Skip
)因此是最佳选择。
可能最简单的方法是:
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
public void MyFunc(ref int[] arr)
{
// Do something
}
int[] myArray = .... ;
MyFunc(ref myArray);
有关ref的更多信息,请参见此处!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.