ASP.NET缓存 - 直接赋值与Add()或Insert()之间的区别是什么

时间:2015-10-29 18:08:31

标签: c# asp.net caching

我试图理解这两个项目之间的区别,以及一个(如果有的话)是“正确”的方式。

我想将一个对象添加到缓存中。例如:

List<String> list = new List<String>();
list.Add("Monday");
list.Add("Tuesday");
list.Add("Wednesday");
list.Add("Thursday");

现在将列表添加到缓存中。我这样做:

System.Web.HttpContext.Current.Cache.Insert("DaysOfTheWeek", list);

或者我可以这样做吗?

System.Web.HttpContext.Current.Cache["DaysOfTheWeek"] = list;

我已经做到了,他们工作得很好。我想知道这是否会爆炸,因为这会扩大,或者它是否会产生任何后果,我不会预见到。

这是在C#,ASP.NET 4.5

1 个答案:

答案 0 :(得分:3)

没有区别。使用索引器(第二个示例)无论如何都只调用Insert。您可以在reference source

中看到这一点
    public object this[string key] {
        get {
            return Get(key);
        }

        set {
            Insert(key, value);
        }
    }

AddInsert的不同之处在于,如果密钥已存在,Add将不会覆盖缓存中的值 - Insert将替换已缓存的值。这在documentation of Add

中提到
  

如果具有相同键参数的项目已存储在缓存中,则对此方法的调用将失败。要使用相同的键参数覆盖现有的Cache项,请使用Insert方法。