C#中的二维数组切片

我想在C#中切片二维数组。

我有两倍[2,2]的价格,并希望检索此数组的第二行。 我试过价格[1,],但我觉得它可能是别的东西。

提前致谢。

没有直接的“切片”操作,但您可以定义这样的扩展方法:

public static IEnumerable SliceRow(this T[,] array, int row) { for (var i = 0; i < array.GetLength(0); i++) { yield return array[i, row]; } } double[,] prices = ...; double[] secondRow = prices.SliceRow(1).ToArray(); 

问题是,如果你有一个锯齿状或多维数组…这里是如何从以下任一位置检索值:

  int[,] rectArray = new int[3,3] { {0,1,2} {3,4,5} {6,7,8} }; int i = rectArray[2,2]; // i will be 8 int[][] jaggedArray = new int[3][3] { {0,1,2} {3,4,5} {6,7,8} }; int i = jaggedArray[2][2]; //i will be 8 

编辑:添加以解决切片部分…

要从其中一个数组中获取一个int数组,您必须循环并检索您所追求的值。 例如:

  public IEnumerable GetIntsFromArray(int[][] theArray) { for(int i = 0; i<3; i++) { yield return theArray[2][i]; // would return 6, 7 ,8 } }