c#赋值问题?
初学,对于赋值问题不知道如何处理,望大家指教。
int s =0
for(int i=0;i<5;i++)
{
int tmpS=0;
dt = GetDataTable(xx)
for (int x=0;x<dt.Rows.Count;x++)
{
tmpS=int.Parse(dt.Rows[i][0].toString());
}
if (s==0)
{
s=tmpS;
}else if(...)
{
...
}
}
如上for循环,s和tmpS指向一样,每次循环都被初始化为0,所以下面的if语句一直都是true.不知道有没有人帮忙看一下如何解决。。
------解决方案--------------------你定义的s自始至终就没有改变啊,一直是0呢。
------解决方案--------------------for (int x=0;x<dt.Rows.Count;x++)
{
tmpS=int.Parse(dt.Rows[i][0].toString());
}
tmps=dt行中的最后一个值。你循环没意义了。是否是tmps+=?
------解决方案--------------------int 不是引用类型 所以不存在S和TMPS指向问题
在你的循环中的最后一次循环
int.Parse(dt.Rows[i][0].toString());
最后一条是0 TMPS是0
另外 如果S不等于0后
if (s==0)
{
s=tmpS;
}else if(...)
{
...
}
会走else if
S的值不会根据TMPS改变 同样也不会有你所说的初始化问题
------解决方案--------------------
------解决方案--------------------其实我一直没看明白的是这句:
for (int x=0;x<dt.Rows.Count;x++)
{
tmpS +=int.Parse(dt.Rows[i][0].toString());
}
姑且不论到底是tmpS=还是tmpS+=,我就纳闷,你这个循环是要干什么?你循环的变量是x,然后在循环内部一直都没用这个变量x,按楼主的代码,其实不用循环,直接tmpS=int.Parse(dt.Rows[i][0].toString())*dt.Rows.Count就可以了。
所以我怀疑是楼主代码写错了,应该写成:
tmpS +=int.Parse(dt.Rows[x][0].toString());