C#Cache未显示存储在Cache中的原始值

时间:2013-03-06 11:30:43

标签: c# asp.net caching

我正在尝试将值存储在缓存中并将其检索回来以缩短处理时间。当我拿回缓存项时,我需要计算该值。但问题是它没有给我存储在缓存中的原始值。而不是那样,它给了我从缓存中获取后我计算的最新值。

我使用以下方法来模拟我的问题。我第一次在缓存中存储了“abc123”。然后我把它改成了“def”。但当我得到它时,它显示“def”而不是“abc123”。这应该是那样的吗?还是我做错了?感谢。

protected void Page_Load(object sender, EventArgs e)
{
    MyObj abc = (MyObj)Cache["myCache"];


    if (abc != null)
    {
        Response.Write(abc.MyText);
        Response.End();
        return;
    }        

    Response.Write(abc);        

    abc = new MyObj() { MyText = "abc123" };

    Cache.Insert("myCache", abc, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero);

    abc.MyText = "def";
}

class MyObj
{
    public string MyText { get; set; }
}

1 个答案:

答案 0 :(得分:1)

您正在编辑缓存中的同一对象(引用)。如果您不想要这种行为,则需要在将对象放入缓存之前克隆该对象。