1

文字列のリストである 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"} です。私は何を間違っていますか?

4

1 に答える 1

1

なぜなら、あなたがするとき

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

bリストのコピーではなく、メモリ内の場所へのポインター (参照) に割り当てています。これは、bandViewState["Blah"]が同じリストを指し、それらのいずれかに対する変更が他方に影響することを意味します。

インスタンスbからデタッチする場合は、リストを複製できますViewState

于 2013-05-30T13:38:49.080 に答える