为什么赋值不成功?

drummerhit 2003-07-27 10:15:23
bookinfo是一结构型变量,作为参数传给方法,在方法中有:
myDataSet.Tables[0].Rows[num].ItemArray[0] = bookinfo.book_name ; //bookinfo.book_name 为string类型
.....
可是执行后myDataSet.Tables[0].Rows[num].ItemArray[0]的值并没有改变,点解?
...全文
129 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
drummerhit 2003-07-28
  • 打赏
  • 举报
回复
TO panyee(快乐王子) :
还是不行啊

TO snof(雪狼)
照你说的确实可以
我想知道的是myDataSet.Tables[0].Rows[num].ItemArray[0]的值为什么没有改变?
xixigongzhu 2003-07-28
  • 打赏
  • 举报
回复
这个问题其实很简单,主要是因为每次对ItemArray的引用都会返回一个新的Object数组,而Item却总是对同一个集合对象进行访问(如果不赋值的话),所以表面看来你通过ItemArray修改了数据行,实际上对ItemArray的修改根本与数据行无关。参考微软的源代码:
public object[] get_ItemArray() {
int local0;
object[] local1;
int local2;

local0 = this.Table.Columns.Count;
local1 = new Object[checked((uint) local0)];
local2 = 0;
while (local2 < local0) {
local1[local2] = this[local2];
local2++;
}
return local1;
}
panyee 2003-07-27
  • 打赏
  • 举报
回复
应该是要dt.AcceptChanges();这一句
雪狼1234567 2003-07-27
  • 打赏
  • 举报
回复
直接使用如下:dt.Tables[0].Rows[0][0]
最后用dt.AcceptChanges();

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧