C# 对象引用未设置为对象的实例。异常

C# 对象引用未设置为对象的实例。异常,c#,datatable,C#,Datatable,这是我的密码 var dictionary = new Dictionary<string, List<Int64[][]>>(); for (int i = 0; i < compainNames.Count(); i++) { List<Int64[][]> data = new List<Int64[][]>(); var dataForOneCampaint = DTgraph.Select("Campaign = '

这是我的密码

var dictionary = new Dictionary<string, List<Int64[][]>>();
for (int i = 0; i < compainNames.Count(); i++)
{
    List<Int64[][]> data = new List<Int64[][]>();
    var dataForOneCampaint = DTgraph.Select("Campaign = '" + compainNames[i].CampaignName.ToString() +"'").ToList();
    for (int j = 0; j < dataForOneCampaint.Count(); j++)
    {
        Int64[][] array = new Int64[1][];
        array[0][0] = (Int64)dataForOneCampaint[j].Field<Decimal>("Inb.ServiceLevel");
        DateTime d = DateTime.Parse(dataForOneCampaint[j].Field<string>("Date").ToString());
        array[0][1] = d.Ticks;
        data.Add(array);
    }
    dictionary.Add(compainNames[i].ToString(), data);
}
var dictionary=newdictionary();
对于(int i=0;i
其中,
DTgraph
是一个数据表

我得到了这个异常
{“对象引用未设置为对象的实例。”}

在这一行:
array[0][0]=(Int64)dataForOneCampaint[j]。字段(“Inb.ServiceLevel”)

我可以看到,
dataForOneCampaint
有16个值

我在另一个函数中使用了相同的字段
Inb.ServiceLevel
,就像我在这段代码中使用的一样,它工作得很好


请问我哪里做错了?

锯齿状数组初始化必须执行两次:一次用于外部维度,一次用于每个内部数组。MSDN上对其进行了更精确的描述:

在您的情况下,您应该执行以下操作:

Int64[][] array = new Int64[1][];
array[0] = new Int64[2];

锯齿状数组初始化必须执行两次:一次用于外部维度,一次用于每个内部数组。MSDN上对其进行了更精确的描述:

在您的情况下,您应该执行以下操作:

Int64[][] array = new Int64[1][];
array[0] = new Int64[2];


数组[0][0]是否存在?我的C#有点生锈,但似乎没有为数组[0]分配任何内容。@SriramSakthivel它没有重复。您确定这是解决问题的正确数据结构吗?二维数组列表是一种相当复杂的结构类型。我建议首先使用对象类型的列表,这样会使事情更具可读性。@user2208349你怎么能这么说?@user3553031我为数组创建
new
。所以我猜
数组[0][0]
已经初始化了,对吗?数组[0][0]是否存在?我的C#有点生锈,但似乎没有为数组[0]分配任何内容。@SriramSakthivel它没有重复。您确定这是解决问题的正确数据结构吗?二维数组列表是一种相当复杂的结构类型。我建议首先使用对象类型的列表,这样会使事情更具可读性。@user2208349你怎么能这么说?@user3553031我为数组创建
new
。所以我猜
array[0][0]
已经初始化了,对吗?您使用
2
的用户是谁?我需要这种
[[1,4][5,1]…[44,1]]
,所以我想它应该只有一个,对吧?我用了
2
,因为在你的代码后面你给
数组[0][0]
数组[0][1]
赋值,这意味着你需要在内部数组中有两个项。这是有效的。一旦系统允许,我将接受答案+1@MarcinJuraszek我已经用你的锯齿阵列样本更新了。请检查我做得是否正确。@rene看起来很好。你可以使用
int[][]
long[][]
而不是
Int64
来使它更自然,但这只是一个细节(我使用了
Int64
,因为OP使用了它)。你用了
2
?我需要这种
[[1,4][5,1]…[44,1]]
,所以我想它应该只有一个,对吧?我用了
2
,因为在你的代码后面你给
数组[0][0]
数组[0][1]
赋值,这意味着你需要在内部数组中有两个项。这是有效的。一旦系统允许,我将接受答案+1@MarcinJuraszek我已经用你的锯齿阵列样本更新了。请检查我做得是否正确。@rene看起来很好。您可能可以使用
int[][]
long[][]
而不是
Int64
使其更自然,但这只是一个细节(我使用了
Int64
,因为OP使用了它)。