首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET是否正在从会话中删除项目?

ASP.NET是否正在从会话中删除项目?
EN

Stack Overflow用户
提问于 2008-11-04 13:40:45
回答 2查看 60.1K关注 0票数 56

哪种方法是首选的?

代码语言:javascript
复制
Session.Remove("foo");

Session["foo"] = null;

有什么不同吗?

EN

回答 2

Stack Overflow用户

发布于 2010-11-09 19:55:54

我知道这是一个老线程,但绝对要坚持使用Session["key"] = null -它要快得多!我做了一些测试(关于InProc会话状态),删除了行中的1000个项目(总共1000个项目的运行时间,所以如果你想要一个项目的平均时间,只需将其除以1000):

正在删除1000个现有项目:

代码语言:javascript
复制
Session[key] = null; - 0.82380000000000009 ms
Session.Remove(key); - 59.960100000000004 ms

正在删除1000个不存在的项目:

代码语言:javascript
复制
Session[key] = null; - 1.5368000000000002 ms
Session.Remove(key); - 0.6621 ms

删除500个现有项目和500个不存在的项目:

代码语言:javascript
复制
Session[key] = null; - 1.0432000000000001 ms
Session.Remove(key); - 33.9502 ms

下面是第一次测试的代码:

代码语言:javascript
复制
Session.Clear();

for (int i = 0; i < 1000; i++)
    Session[i.ToString()] = new object();

Stopwatch sw1 = Stopwatch.StartNew();
for (int i = 0; i < 1000; i++)
    Session[i.ToString()] = null;
sw1.Stop();

Session.Clear();

for (int i = 0; i < 1000; i++)
    Session[i.ToString()] = new object();

Stopwatch sw2 = Stopwatch.StartNew();
for (int i = 0; i < 1000; i++)
    Session.Remove(i.ToString());
sw2.Stop();
票数 25
EN

Stack Overflow用户

发布于 2008-11-04 15:17:35

最大的不同在于从会话中读取的方式。

代码语言:javascript
复制
if(Session.ContainsKey["foo"]) { return Session["foo"]; }

代码语言:javascript
复制
if(Session["foo"] != null) { return Session["foo"]; }

如果使用第一种方法,将值设置为null将不起作用,您应该使用remove。

如果使用第二种方法,则可以将值设置为null。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/261920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档