初学,对于赋值问题不知道如何处理,望大家指教。int s =0for(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.不知道有没有人帮忙看一下如何解决。。
{
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.不知道有没有人帮忙看一下如何解决。。
int tmpS=0;for(int i=0;i<5;i++)
{
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(...)
{
...
}
}
{
tmpS=int.Parse(dt.Rows[i][0].toString());
}
tmps=dt行中的最后一个值。你循环没意义了。是否是tmps+=?
在你的循环中的最后一次循环int.Parse(dt.Rows[i][0].toString());
最后一条是0 TMPS是0另外 如果S不等于0后
if (s==0)
{
s=tmpS;
}else if(...)
{
...
}
会走else if
S的值不会根据TMPS改变 同样也不会有你所说的初始化问题
如果我在外面定义tmpS ,这个值就会一直累加上来,我想在每个for(int i=0;i<5;i++) 之间重新设置为0.
老兄说的没错,另外我想知道一下DataTable之间的赋值是否相互影响如。int s =0;
DataTable dt = new DataTable();for(int i=0;i<5;i++)
{
int tmpS=0;
DataTable tmpDt = GetDataTable(xx);
for (int x=0;x<dt.Rows.Count;x++)
{
tmpS +=int.Parse(dt.Rows[i][0].toString());
}
if (s==0)
{
s=tmpS;
dt=tmpDt;
}else if(...)
{
...;
}
}
int s =0;
DataTable dt = new DataTable();for(int i=0;i<5;i++)
{
int tmpS=0;
DataTable tmpDt = GetDataTable(xx);
for (int x=0;x<dt.Rows.Count;x++)
{
tmpS +=int.Parse(dt.Rows[i][0].toString());
}
if (s==0)
{
s=tmpS;
dt=tmpDt;
}else if(...)
{
...;
}
}
DataTable dt = new DataTable();
for xxx
{
DataTable tmpDt = GetDataTable(xx);
}
if (tmpDt.rows.count>dt.rows.count)
{
dt = tmpDt.copy();
}
返回值
类型:System.Data..::.DataTable
新的 DataTable,它具有与该 DataTable 相同的结构(表架构和约束)和数据。
如果这些类已经过派生,则副本也具有相同的派生类。
Copy 和 Clone 方法创建的新 DataTable 都与原始 DataTable 具有相同的结构。 Copy 方法创建的新 DataTable 与原始表具有相同的 DataRows 集,但 Clone 方法创建的新 DataTable 不包含任何 DataRows。
MSDN看一下http://msdn.microsoft.com/zh-cn/system.data.datatable.copy(v=vs.80)另外,复制datatable结构,复制datatable结构和数据,筛选Datatable数据
也可以用datatable.Clone()
int tmpS=0;for(int i=0;i<5;i++)
{
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 (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());