【发布时间】:2010-02-23 12:58:56
【问题描述】:
我在使用会话变量时遇到了一些麻烦,因为它们被用作参考,我想将它们用作值。
我开始调试我的解决方案并创建了类似的东西:
DataTable dt =
(DataTable)HttpContext.Current.Session[
"SearchReturn-DataTableSchema"];
// Adding Rows of Data to DataTable dt
HttpContext.Current.Session["SearchReturn-DataTable"] = dt;
((DataTable)HttpContext.Current.Session[
"SearchReturn-DataTableSchema"]).Rows.Clear();
return dt;
我的想法是在“DataTableSchema”中仅包含具有列架构的 DataTable,而在“DataTable”中包含列 + 行。
问题是,当我从 DataTableSchema 清除所有行时,变量 dt 也会清除行 (!!)
如何避免这种情况?如何将变量(在本例中为 Session 变量)分配为值而不是引用?
谢谢。
回答
这个
DataTable dt = (DataTable)Session["SearchReturn-DataTableSchema"];
必须是这样的:
DataTable dt = ((DataTable)Session["SearchReturn-DataTableSchema"]).Copy();
:-)
【问题讨论】: