2010-03-24 70 views
2
List<Foo> fooList = Session["foo"] as List<Foo>; 
fooList.Add(bar); 

對Add()的調用是否更改會話中的數據?換句話說:當我從Session中拉下「foo」時,該列表是否包含barASP.NET會話數據是否更改?

+0

我想我問的是會話返回val還是ref? – lance 2010-03-24 20:58:32

+0

會話持有有效指向List <>的指針。所以,當你檢索它並混淆List <>時,你正在搞亂存儲在Session中的同一個List <>。 @達林給出了正確的答案。 – 2010-03-24 21:01:37

回答

2

是的會話將被更改爲List<T>是一個引用類型。所有這些fooList變量代表的是指向真實對象的指針,並且所有Session["foo"]表示的也是指向同一對象的指針。因此,更改fooList將影響會話也指向的真實對象。如果您在會話中存儲值類型,行爲將會不同。