2009-02-04 4 views
3

Voici comment je gère habituellement les objets dans l'état de session, j'ai une chaîne const comme nom de session, puis j'ai une propriété avec get et set pour l'objet. Ce que je me demandais, c'était si l'appel de 'Session.Remove()' était nécessaire (pour garder les choses propres et bien rangées) et s'il y avait un surcoût important et faire cette suppression.État de session suppression et ajout de surcharge

J'ai la session.Retirez-vous là bas parce que je me sens mieux (TOC je sais), et me donne l'impression que la session est plus propre, mais je voudrais savoir si ce n'est pas nécessaire.

private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}"; 
public MyObject MyObjectProperty 
{ 
    get 
    { 
     return Session[sesMyObject] as MyObject; 
    } 
    set 
    { 
     Session.Remove(sesMyObject); 
     Session.Add(sesMyObject, value); 
    } 
} 

EDIT par les réponses ci-dessous j'ai changé mes propriétés à ce qui suit:

private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}"; 
public MyObject MyObjectProperty 
{ 
    get 
    { 
     return Session[sesMyObject] as MyObject; 
    } 
    set 
    { 
     Session[sesMyObject] = value; 
    } 
} 

merci!

Répondre

2

Si vous vraiment voulez être sûr, essayez de convertir l'objet en IDisposable, et si elle réussit, appelez Dispose.

IDisposable sesDispObj = Session[sesMyObject] as IDisposable; 
if (sesDispObj != null) 
    sesDispObj.Dispose(); 

Autre que cela,

Session[sesMyObject] = value 

est à peu près la même chose que

Session.Remove(sesMyObject);   
Session.Add(sesMyObject, value); 
2

Il est surpuissant. Référenceurs MSDN

Si le paramètre nom fait référence à un élément d'état de session existant , le élément existant est remplacée par la valeur spécifiée .

1
Session[sesMyObject] = value; 

est plus court, plus simple à lire, et devrait avoir une performance légèrement meilleure, mais à moins que ce code est répété un grand nombre de fois de suite, il ne devrait pas faire une différence.

Questions connexes