初始化多维数组时,"对象引用未设置为对象的实例"

Mik*_*e B 1 c# asp.net razor

我在ASP.NET razor页面(cshtml)上运行以下代码,并且遇到了可怕的"对象引用没有设置为对象的实例"问题.有人可以帮我解决这个问题吗?我正在使用的代码如下,导致问题的行是menu[1][0] = "About";

string[][] menu = new string[5][];
menu[0] = new string[2];
// First menu item
menu[0][0] = "Home";
// First menu URL
menu[0][1] = "#";
// Second menu item
menu[1][0] = "About";
// Second menu URL
menu[1][1] = "#";
// Third menu item
menu[2][0] = "Contact";
// Third menu URL
menu[2][1] = "#";
// Fourth menu item
menu[3][0] = "More Info";
// Fourth menu URL
menu[3][1] = "#";
// Fifth menu item
menu[4][0] = "Test";
// Fifth menu URL
menu[4][1] = "#";
Run Code Online (Sandbox Code Playgroud)

提前致谢

Mar*_*ers 6

您只初始化了第一个元素menu.尝试for循环:

for (int i = 0; i < menu.Length; ++i)
{
    menu[i] = new string[2];
}
Run Code Online (Sandbox Code Playgroud)

或者你可以像这样写:

string[][] menu =
{
    new string[] {"Home", "#"},
    new string[] {"About", "#"},
    new string[] {"Contact", "#"},
    new string[] {"More Info", "#"},
    new string[] {"Test", "#"}
};
Run Code Online (Sandbox Code Playgroud)

或者使用矩形阵列代替:

string[,] menu =
{
    {"Home", "#"},
    {"About", "#"},
    {"Contact", "#"},
    {"More Info", "#"},
    {"Test", "#"}
};
Run Code Online (Sandbox Code Playgroud)

因为你的第二个元素是不变的,也许你根本不需要存储它 - 在这种情况下你可以使用一个string[].

string[] menu = { "Home", "About", "Contact", "More Info", "Test" };
Run Code Online (Sandbox Code Playgroud)

  • 如果长度确实是一致的(为了使用`for`循环你需要它),那么方形数组首先比锯齿状数组更合适. (2认同)