我在使用 Session Variables 时遇到了一些麻烦,因为它们被用作Reference并且我想将它们用作value。
我开始调试我的解决方案,并创建了类似的东西:
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 也会清除 Rows (!!)
如何避免这种情况?如何将变量(在本例中为 Session 变量)分配为值而不是引用?
谢谢你。
回答
这
DataTable dt = (DataTable)Session["SearchReturn-DataTableSchema"];
需要是这样的:
DataTable dt = ((DataTable)Session["SearchReturn-DataTableSchema"]).Copy();
:-)