c# - "Object reference not set to an instance of an object"初始化多维数组时

标签 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] = "#";

提前致谢

最佳答案

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

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

或者你可以这样写:

string[][] menu =
{
    new string[] {"Home", "#"},
    new string[] {"About", "#"},
    new string[] {"Contact", "#"},
    new string[] {"More Info", "#"},
    new string[] {"Test", "#"}
};

或者改用矩形数组:

string[,] menu =
{
    {"Home", "#"},
    {"About", "#"},
    {"Contact", "#"},
    {"More Info", "#"},
    {"Test", "#"}
};

并且由于您的第二个元素是常量,也许您根本不需要存储它 - 在这种情况下您可以只使用 string[]

string[] menu = { "Home", "About", "Contact", "More Info", "Test" };

关于c# - "Object reference not set to an instance of an object"初始化多维数组时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3282193/

相关文章:

html - 居中多个元素,当元素数量可能发生变化时

razor - Sitecore 中非常简单的站点地图

razor - ( Razor )Html.Helper 中的字符串长度?

c# - 此类继承语义的名称

c# - 我可以从 Razor 局部 View 中填充母版页中的 ContentPlaceHolder 吗?

asp.net - 多个 Web 项目托管在 Visual Studio 2013 中的 IIS Express 上

c# - 如何将日期时间字段转换为 2011 年 2 月 1 日之类的字符串?

c# - 如何在 MySQL 的 ASP.NET C# 应用程序中使用微软企业库

c# - 设置网格以填充整个屏幕

c# - 嵌套的异步任务