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

L'appel de Add() modifie-t-il les données de la session? Autrement dit: quand je tire ensuite "foo" de la Session, la liste contiendra-t-elle bar?Les données de session ASP.NET sont-elles modifiées?

+0

Je suppose que je demande si la session retourne par val ou ref? – lance

+0

La session contient ce qui est effectivement un pointeur sur la liste <>. Ainsi, lorsque vous le récupérez et que vous faites des dégâts avec la liste <>, vous jouez avec la même liste <> stockée dans Session. @Darin a donné la bonne réponse. –

Répondre

2

Oui, la session sera modifiée car List<T> est un type de référence. Tout ce que représente cette variable fooList est un pointeur vers l'objet réel et tout ce que représente Session["foo"] est également un pointeur vers le même objet. Donc changer fooList affectera l'objet réel que la session pointe également vers. Le comportement sera différent si vous stockez les types de valeur dans la session.

Questions connexes