C# 引用设置对象时,对象引用未设置为对象的实例

C# 引用设置对象时,对象引用未设置为对象的实例,c#,.net,arrays,settings,nullreferenceexception,C#,.net,Arrays,Settings,Nullreferenceexception,我在Properties.settings.Default中有一个设置属性,它是“string[][](由字符串数组构建的字符串数组)。 我是这样设置的,似乎VS正确地阅读了它: <Setting Name="Markers" Type="System.String[][]" Scope="User"> 代码的其余部分与Properties.Settings.Default.Markers无关。我刚开始处理这个 编辑: 我发现按钮是空的。。。我发现初始化它的唯一方法是:Proper

我在Properties.settings.Default中有一个设置属性,它是“string[][](由字符串数组构建的字符串数组)。 我是这样设置的,似乎VS正确地阅读了它:

<Setting Name="Markers" Type="System.String[][]" Scope="User">
代码的其余部分与Properties.Settings.Default.Markers无关。我刚开始处理这个

编辑:
我发现按钮是空的。。。我发现初始化它的唯一方法是:Properties.Settings.Default.Markers=newstring[100][];问题是它最多有100个阵列。我的问题是,有没有办法在不设置长度的情况下对其进行初始化?

我继续搜索了很多次,发现了以下内容:


这回答了我的问题,帮了我很大的忙

这不是二维数组,而是锯齿数组。是的。。。我在谷歌上搜索了一下,看起来这就是我的意思,一个数组的数组……你有没有使用调试器来查看buttons变量在第一行代码中设置了什么?唯一真正导致第二行错误的是buttons==null。那么您的buttons对象是null?buttons具有字符串[][]类型,但我看不出它是根据您的示例初始化的。几乎所有
NullReferenceException
的情况都是相同的。有关提示,请参阅“”。
string[][] buttons = (string[][])Properties.Settings.Default.Markers;
buttons[0] = new string[] { "pause", "", "0", "255", "0" }; // Object reference not set to an instance of an object - here

buttons[1] = new string[] { "pause", "", "0", "255", "0" };

buttons[2] = new string[] { "effect", "", "255", "0", "0" };

buttons[3] = new string[] { "interest", "", "255", "255", "0" };

buttons[4] = new string[] { "cut", "", "0", "255", "255" };