这是我试过的代码
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
这里的语法是什么?
谢谢!
答案 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)];
}