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使用了它)。