繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM