给2d数组赋值会产生异常

本文关键字:异常 赋值 2d 数组 | 更新日期: 2023-09-27 18:18:20

我试图将值分配给2D整数数组的第0个位置。然而,我得到一个NullReferenceException异常,尽管我正在传递正确的值。

public static int[,] Ctable;
private static void GetTable(int m,int n)
{
    m = 16;
    for (int i = 1; i <= m; i++)
    {
        Ctable[i, 0] = 1; // Here it is giving Exception
    }
}

给2d数组赋值会产生异常

您没有正确初始化2D数组Ctable,它仍然为空。请看下面的例子。我用void GetTable(int m, int n)方法的输入参数mn的大小初始化数组。

你的循环也不正确。数组的索引为0 (0,n - 1)。您可以在这里找到一些初始化数组的附加信息。

public static int[,] Ctable;
private static void GetTable(int m, int n)
{
    Ctable = new int[m, n]; // Initialize array here.
    for (int i = 0; i < m; i++) // Iterate i < m not i <= m.
    {
        Ctable[i, 0] = 1;
    }
}

但是,您将始终覆盖Ctable。也许你正在寻找这样的内容:

private const int M = 16; // Size of the array element at 0.
private const int N = 3; // Size of the array element at 1.
public static int[,] Ctable = new int [M, N]; // Initialize array with the size of 16 x 3.
private static void GetTable()
{
    for (int i = 0; i < M; i++)
    {
        Ctable[i, 0] = 1;
    }
}