我有一个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”}。我做错了什么?
答案 0 :(得分:1)
因为你做的时候
List<string> b = (List<string>)ViewState["Blah"];
您正在为b
指定一个指向内存中某个位置的指针(一个引用),而不是该列表的副本。这意味着b
和ViewState["Blah"]
指向同一个列表,其中任何一个的更改都会影响另一个列表。
如果要从b
实例
ViewState
,可以克隆列表