Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在锯齿状数组上使用Array.IndexOf_C#_Arrays_Indexing_Jagged Arrays - Fatal编程技术网

C# 在锯齿状数组上使用Array.IndexOf

C# 在锯齿状数组上使用Array.IndexOf,c#,arrays,indexing,jagged-arrays,C#,Arrays,Indexing,Jagged Arrays,如果我有一个锯齿状数组,如下所示: [0][0]{128} [0][1]{512} [1][0]{64} 我如何获得数字的两个索引。因此,如果我试图得到64,我会得到类似0,1的东西,指示项目的索引。我尝试使用Array.IndexOf()方法,但是我得到了-1,因为它不是为锯齿状数组构建的。输出的格式并不重要。它可以是一个字符串、两个整数、一个字节数组或任何东西。试试这个: public static Tuple<int, int> IndexOf<T>(this T

如果我有一个锯齿状数组,如下所示:

[0][0]{128}
[0][1]{512}
[1][0]{64}
我如何获得数字的两个索引。因此,如果我试图得到
64
,我会得到类似
0,1
的东西,指示项目的索引。我尝试使用
Array.IndexOf()
方法,但是我得到了
-1
,因为它不是为锯齿状数组构建的。输出的格式并不重要。它可以是一个字符串、两个整数、一个字节数组或任何东西。

试试这个:

public static Tuple<int, int> IndexOf<T>(this T[][] jaggedArray, T value)
{
    for (int i = 0; i < jaggedArray.Length; i++)
    {
        T[] array = jaggedArray[i];
        for (int j = 0; j < array.Length; j++)
            if (array[j].Equals(value))
                return Tuple.Create(i, j);
    }
    return Tuple.Create(-1, -1);
}
public static Tuple IndexOf(这个T[][]jaggedArray,T值)
{
for(int i=0;i
您可以将其用作:

int[][] myArray = ...
Tupple<int, int> position = myArray.IndexOf(64);
int[]myArray=。。。
tuple position=myArray.IndexOf(64);
或对于矩阵:

public static Tuple<int, int> IndexOf<T>(this T[,] matrix, T value)
{
    int width = matrix.GetLength(0); 
    int height = matrix.GetLength(1); 

    for (int x = 0; x < width; ++x)
        for (int y = 0; y < height; ++y)
            if (matrix[x, y].Equals(value))
                return Tuple.Create(x, y);

    return Tuple.Create(-1, -1);
}
公共静态元组IndexOf(此T[,]矩阵,T值)
{
int width=matrix.GetLength(0);
int height=矩阵.GetLength(1);
对于(int x=0;x

您可能仍然希望检查空值或空数组,但这取决于您。

Hi,请参阅:为什么要复制此解决方案?我认为是同一个Pawel,但他提供的顶级解决方案不同。