将int添加到其现有数组中

时间:2016-08-04 15:20:31

标签: c# .net arrays

这是我试过的代码

int[] WeeklyTotal = new int[53];
for (int w = 1; w <= 53; w++)
{
    WeeklyTotal[w] = WeeklyTotal[w] + data.Rows[i]["week" + w];  // Error is here
}

但是我收到了编译错误:

  

无法将opperator +应用于int和object

类型的opperands

这里的语法是什么?

谢谢!

4 个答案:

答案 0 :(得分:5)

您需要将object类型转换为integer类型

WeeklyTotal[w] = WeeklyTotal[w] + (int)data.Rows[i]["week" + w]; 

还需要更新循环逻辑的数组迭代,否则索引将超出范围,它将抛出IndexOutOfRangeException

for (int w = 0; w < WeeklyTotal.Length; w++)
{
    WeeklyTotal[w] = WeeklyTotal[w] + (int)data.Rows[i]["week" + w];
}

答案 1 :(得分:2)

如果对象确实是一个盒装整数,请使用(int) Cast操作符使用Convert.ToInt32()

答案 2 :(得分:1)

需要将对象类型转换为整数:

WeeklyTotal[w] = WeeklyTotal[w] + (int)data.Rows[i]["week" + w];

答案 3 :(得分:1)

正如其他人已经指出的那样,您必须将object返回的data.Rows[i]["week" + w]投放到int

但是更重要您的for循环错误并导致IndexOutOfRangeException

数组在c#中是零索引的,因此你的循环应该从0到52运行,或者在访问数组时你必须将w减少一个:

int[] WeeklyTotal = new int[53];
for (int w = 1; w <= 53; w++)
{
    WeeklyTotal[w-1] = WeeklyTotal[w-1] + (int)data.Rows[i]["week" + w];
}

int[] WeeklyTotal = new int[53];
for (int w = 0; w < 53; w++)
{
    WeeklyTotal[w] = WeeklyTotal[w] + (int)data.Rows[i]["week" + (w+1)];
}