C# 参数1:无法从“int[][]”转换为“int[*,*]”

C# 参数1:无法从“int[][]”转换为“int[*,*]”,c#,C#,我正在尝试制作一个应用程序,添加矩阵的行和列。应用程序背后的逻辑是,你在文本框中输入矩阵的每一行,并用/分隔每一行。例如:1234/1234。我正在尝试将值从string转换为int,但是我一直得到参数1错误 编辑:忘记添加用于添加行的函数 if (decision == 2) { string[] tokens = a.Split('/'); int[][] tokens1 = new int[][] { tokens[0].Split(' ').Select(

我正在尝试制作一个应用程序,添加矩阵的行和列。应用程序背后的逻辑是,你在文本框中输入矩阵的每一行,并用/分隔每一行。例如:1234/1234。我正在尝试将值从string转换为int,但是我一直得到参数1错误

编辑:忘记添加用于添加行的函数

if (decision == 2)
{
    string[] tokens = a.Split('/');
    int[][] tokens1 = new int[][] {
        tokens[0].Split(' ').Select(Int32.Parse).ToArray(),
        tokens[1].Split(' ').Select(Int32.Parse).ToArray()
    };

    row_sum(tokens1, 2);
}

static void row_sum(int[,] arr, int orden)
{
    int i, j, sum = 0;

    // finding the row sum 
    for (i = 0; i < orden; ++i)
    {
        for (j = 0; j < orden; ++j)
        {

            // Add the element 
            sum = sum + arr[i, j];
        }

        // Print the row sum 
        Console.WriteLine("Sum of the row " +
                             i + " = " + sum);

        // Reset the sum 
        sum = 0;
    }
}

您遇到的问题是,您正在处理两种不同类型的阵列:

tokens1是一个锯齿数组int[]]:它是一个数组数组。令牌s1[0]处的子数组的长度可以与令牌s1[1]处的数组的长度不同。 arr是一个二维数组。尺寸是预定义的,并且第二个边界的长度永远不会基于第一个边界更改。 有关二维阵列与锯齿阵列的详细信息,请参见

问题的解决方案是让row_sum接受与您正在创建的数组类型相同的数组,或者创建与row_sum接受的数组类型相同的数组

最简单的选择可能是让row_sum接受锯齿状数组:

 static void row_sum(int[][] arr)
 {

    int i, j, sum = 0;

    // finding the row sum 
    for (i = 0; i < arr.Length; ++i)
    {
        for (j = 0; j < arr[i].Length; ++j)
        {

            // Add the element 
            sum = sum + arr[i][j];
        }

        // Print the row sum 
        Console.WriteLine("Sum of the row " +
                             i + " = " + sum);


        // Reset the sum 
        sum = 0;
    }
 }
我冒昧地删除了长度值,因为它不是必需的,因为这些信息可以从数组本身获得。

A与A不同。在第一部分中,您使用一个锯齿状数组tokens1,在row_sum方法的第二部分中,变量arr,您使用的是多维数组。你必须在两个地方都使用相同的代码,否则你会得到你所说的编译器错误。