为什么ViewState会发生变化

时间:2013-05-30 13:33:42

标签: asp.net viewstate state-management

我有一个ViewState [“blah”],它是一个字符串列表。在某些时候,我设置了一个List< string>变量等于视图状态。无论我对此变量所做的任何更改都会影响视图状态:

List<string> a = {"1", "2", "3"};
ViewState["Blah"] = a;
....
List<string> b = (List<string>)ViewState["Blah"];
b.Remove("2");

现在,ViewState [“Blah”]是{“1”,“3”}。我做错了什么?

1 个答案:

答案 0 :(得分:1)

因为你做的时候

List<string> b = (List<string>)ViewState["Blah"];

您正在为b指定一个指向内存中某个位置的指针(一个引用),而不是该列表的副本。这意味着bViewState["Blah"]指向同一个列表,其中任何一个的更改都会影响另一个列表。

如果要从b实例

分离ViewState,可以克隆列表