1

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

我使用以下内容来模拟我的问题。我第一次将“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; }
}
4

1 回答 1

1

您正在编辑缓存中的同一对象(参考)。如果您不希望出现这种行为,则需要先克隆对象,然后再将其放入缓存中。

于 2013-03-06T11:33:53.780 回答