以下是我通常如何处理会话状态中的对象,我有一个const字符串作为会话名称,然后有一个属性,其中包含对象的get和set。
我想知道的是,是否需要'Session.Remove()'调用(以保持干净整洁)以及是否存在大量开销并进行此删除。
我有Session.Remove那里基本上因为它让我感觉更好(OCD我知道),并让我觉得会话更干净,但我想知道是否不需要。
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;
}
}
谢谢!
答案 0 :(得分:2)
如果确实想要安全,请尝试将对象转换为IDisposable,如果成功,请调用Dispose。
IDisposable sesDispObj = Session[sesMyObject] as IDisposable;
if (sesDispObj != null)
sesDispObj.Dispose();
除此之外,
Session[sesMyObject] = value
与
几乎相同 Session.Remove(sesMyObject);
Session.Add(sesMyObject, value);
答案 1 :(得分:2)
这太过分了。参考MSDN
如果name参数引用了 现有会话状态项, 现有项目被覆盖 指定值。
答案 2 :(得分:1)
Session[sesMyObject] = value;
更短,更易于阅读,性能稍好一些,但除非此代码连续重复多次,否则不应有所作为。