为什么这个C#代码会失败

本文关键字:失败 代码 为什么 | 更新日期: 2023-09-27 18:26:52

这是矩阵乘积,它将答案保存在C中,使C=A*B。那么为什么C的值不会改变呢?

它使用特殊的方法来计算每一列,因为我们希望在并行编程中使用这种方法,以便在单个线程中对每一列进行求值。我以前在pascal中测试过类似的东西,但在C#中,所有的东西都是错误的。

注意:这是家庭作业,在这段代码中还没有并行代码。

class Program
{
    private static int n = 2;
    static int[,] A = new int[n, n];
    static int[,] B = new int[n, n];
    static int[,] C = new int[n, n];
    private static void Main(string[] args)
    {
        A[0, 0] = 2; A[0, 1] = 3;
        A[1, 0] = 5; A[1, 1] = 1;
        B[0, 0] = 3; B[0, 1] = 0;
        B[1, 0] = 1; B[1, 1] = 0;
        C[0, 0] = 0; C[0, 1] = 0;
        C[1, 0] = 0; C[1, 1] = 0;
        //Calculation 
        for (int z = 0; z < n; z++)
        {
            ComputeColumn(z);
        }
        PrintAnswer(C);
        Console.ReadKey();
    }
    private static void ComputeColumn(int n)
    {
        for (int i = 0; i < n; i++)
        {
            for (int k = 0; k < n; k++)
            {
                C[i, n] += (A[i, k] * B[k, n]);
            }
        }
    }
    private static void PrintAnswer(int[,] what)
    {
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                Console.Write(what[i, j] + " ");
            }
            Console.WriteLine();
        }
    }
}

为什么这个C#代码会失败

尝试重命名n 的多次使用

private static int n = 2;
ComputeColumn(int n)

像这样更有意义的东西

private static int NumberOfColumns = 2;
ComputeColumn(int currentColumn)

我认为这会很快把问题暴露出来。