2017-07-17 46 views
0

我有一个类如下:如何清除包含C#中的列表的会话变量?

public class Employee 
{ 
    public int EmployeeID { get; set; } 
    public string Name { get; set; } 

    public List<int> ProjectIDs { get; set; } 
} 

,并在一个点上我存储在清单会话变量,就像这样:

List<Employee> employees = new List<Employee>(); 
// populate employees 

Session["EmployeeList"] = employees; 

当我用它做的,我想清楚了它,所以我做的:

Session["EmployeeList"] = null; 

雇员和名称是清除出去,而不是List<int> ProjectIDs这就是它。如何确保Session["EmployeeList"]完全被清除?

+2

你不需要。垃圾收集器知道如何完成它的工作。 – SLaks

+0

@SLaks在我的问题中修正了一个拼写错误。我的意思是指出,当我测试它时,session变量中的'List '没有被清除,而'EmployeeID'和'Name'都被清除了。 – Darren

+0

你是说你给'Session [“EmployeeList”]'分配了'null',然后你仍然可以从'Session [“EmployeeList”]''中检索一个有效的列表?这听起来不对。 –

回答

0

您可以使用Remove()方法上Session对象说

Session.Remove("EmployeeList"); 

顺便说一句,你说什么不应该的;一旦你设置会话对象为空说Session["EmployeeList"] = null; ...然后试图找回与该密钥相同的会话对象((List<Employee>)Session["EmployeeList"]) == null ;应该返回空

+0

你是对的,事实证明,代码将它设置回其他地方,它被保存到会话中。谢谢! – Darren