2010-03-24 72 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将影响会话也指向的真实对象。如果您在会话中存储值类型,行为将会不同。