使用会话变量存储信息

时间:2016-03-26 15:38:04

标签: c# asp.net session

我是ASP.NET的新手:)我想更多地了解session。这是一个简单的例子:每次单击按钮,它都会向listInt添加一个整数,并使用Session["listInt"]存储列表。

public partial class TestSession : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["listInt"] == null)
            {
                Session["listInt"] = new List<Int16>();
            }
        }

    }

    protected void AddInt_Click(object sender, EventArgs e)
    {
        Int16 i = 0;
        List<Int16> listInt = (List<Int16>)Session["listInt"];
        listInt.Add(i);
        Session["listInt"] = listInt;
        Response.Write("Hello!");

    }
}

这是我不明白的事情,如果我对行Session["listInt"] = listInt;发表评论,每当我点击变量Session["listInt"]仍然存储该值时(意味着仍然在列表中添加更多整数):

        Int16 i = 0;
        List<Int16> listInt = (List<Int16>)Session["listInt"];
        listInt.Add(i);
        //Session["listInt"] = listInt;  //No idea why....
        Response.Write("Hello!");

有人可以告诉我在这种情况下会话的工作原理吗?在此先感谢:)

1 个答案:

答案 0 :(得分:4)

您的列表是引用类型,因此当您通过会话状态容器从服务器检索它时,您实际上会获得对服务器内存中某个对象的引用。因此,以后无需重新分配。