题
以下是我通常在会话状态下处理对象的方式,我将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;
更短,更简单,并且应该具有更好的性能,但是除非连续重复多次此代码,否则它应该不会有所作为。
不隶属于 StackOverflow