日期:2014-05-18  浏览次数:20905 次

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改变 同样也不会有你所说的初始化问题
------解决方案--------------------
探讨

引用:

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的值……

------解决方案--------------------
其实我一直没看明白的是这句:
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());