以下是我通常在会话状态下处理对象的方式,我将const字符串作为会话名称,然后具有带有get并设置为对象的属性。

我想知道的是“ session.remove()”呼叫是否需要(以保持清洁和整洁),以及是否有大量的开销并进行此删除。

我有会议。基本上是因为它使我感觉更好(我知道的强迫症),并且让我觉得会话更干净,但是我想知道是否不需要。

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);
    }
}

编辑根据以下答案,我将属性更改为以下内容:

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

谢谢!

有帮助吗?

解决方案

如果你 真的 想要安全,请尝试将对象转换为可iDisposable,如果成功的话,请呼叫处置。

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

除此之外,

 Session[sesMyObject] = value

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

其他提示

这是过度的。参考 MSDN

如果名称参数是指现有的会话状态项目,则现有项目被指定的值覆盖。

Session[sesMyObject] = value;

更短,更简单,并且应该具有更好的性能,但是除非连续重复多次此代码,否则它应该不会有所作为。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top