You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.Net MVC中Session存储的DataTable被关联DataTable清空问题

问题原因解析

这是因为DataTable属于引用类型,而非值类型,具体逻辑如下:

  • 执行dataTable = (DataTable)Session["MyDataTable"];时,并没有生成新的DataTable对象,只是将Session中存储的DataTable实例的内存引用地址赋值给了变量dataTable。此时dataTable和Session["MyDataTable"]指向的是内存中同一个DataTable实例。
  • 当调用dataTable.Rows.Clear();时,实际是对内存中这个唯一的DataTable实例执行清空行操作,Session里存储的引用依然指向该实例,所以Session中的DataTable也会同步变为空。

如果要避免修改变量时影响Session内的原数据,需要先创建原DataTable的副本,示例代码:

dataTable = ((DataTable)Session["MyDataTable"]).Copy();
dataTable.Rows.Clear(); // 此时仅修改副本,Session中的原DataTable不受影响

内容的提问来源于stack exchange,提问作者Frank Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:00:54