无法在锯齿状数组中声明对象

时间:2015-08-30 01:38:59

标签: c# arrays visual-studio visual-studio-2013

所以我试图制作一个应用程序来计算你在一次地铁运输中所花费的时间,所以我制作了一个车站类,并且以正常的形式我做了一个包含三行的锯齿状数组(每行代表一个不同的地铁线)所以我声明这样的数组:station[][] lines = new station[3][];然后我声明像这样的行

lines[0] = new station[34];
lines[1] = new station[19];
lines[2] = new station[35];

我在锯齿状数组中声明对象内的名称和值,如下所示:

lines[0][0].name = "stationname";
lines[0][0].number = 1;`

但是当我运行该程序时,它给了我一个NullReferenceException, 我知道我没有正确宣布这些物品(我认为)并且我不知道如何正确宣布它们。 好吧,这是一个更完整的代码示例:

        station[][] lines = new station[3][];
        lines[0] = new station[34];
        lines[0][0] = new station {name = "حلوان", number = 1 };
        lines[0][0].number = 1;
        lines[0][1].name = "عين حلوان";
        lines[0][1].number = 2;
        lines[0][2].name = "جامعة حلوان";
        lines[0][2].number = 3;
        lines[0][3].name = "وادى حوف";
        lines[0][3].number = 4;
        lines[0][4].name = "حدائق حلوان";
        lines[0][4].number = 5;

第二行

            lines[1] = new station[19];
        lines[1][0].name = "المنيب";
        lines[1][0].number = 36;
        lines[1][1].name = "ساقية مكى";
        lines[1][1].number = 37;
        lines[1][2].name = "ضواحى الجيزة";
        lines[1][2].number = 38;
        lines[1][3].name = "محطة الجيزة";
        lines[1][3].number = 39;
        lines[1][4].name = "فيصل";
        lines[1][4].number = 40;
        lines[1][5].name = "جامعة القاهرة";
        lines[1][5].number = 41;

第3行

            lines[2] = new station[35];
        lines[2][0].name = "مطار القاهرة";
        lines[2][0].number =54;
        lines[2][1].name = "السلام";
        lines[2][1].number = 55;
        lines[2][2].name = "عمر بن الخطاب";
        lines[2][2].number = 56;
        lines[2][3].name = "قباء";
        lines[2][3].number = 57;
        lines[2][4].name = "النزهة٢";
        lines[2][4].number = 58;
        lines[2][5].name = "النزهة١";
        lines[2][5].number = 59;

2 个答案:

答案 0 :(得分:0)

您已初始化数组,但未初始化其中的任何对象。

执行:

lines[0][0] = new Station() { name = "...", number = 1 };

PS:我想你的意思是Station而不是station对吧?

答案 1 :(得分:0)

我认为可能有点混乱。我试图捕捉我认为你的意思。你想要一个行数组,在那个数组中,每行包含一个Stations数组。每个站都有一个名称和号码。基于这种理解,这里有一些代码可以工作,并且可以了解其余部分应该如何构建。

    internal class Station
    {
        internal string name;
        internal int stationNumber;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        Station[][] line = new Station[3][]; // Assuming 3 lines total

        line[0] = new Station[34]; // This is saying line #0 (stored in element major 0) needs 34 elements, each of which will contain a Station instance
        line [0][0] = new Station { "حلوان", 1 };
        line [0][1] = new Station {"عين حلوان", 2};
        line[0][2] = new Station {"جامعة حلوان",3};
        line[0][3] = new Station {"وادى حوف",4};
        line[0][4] = new Station { "حدائق حلوان", 5 };
    }