我应该 MemoryCache 一个静态对象吗?

Should I MemoryCache a static object?

我有一个静态 class,里面有一个静态列表。

public static class Translations {
    public static List<string> Resources {get; set;}
}

那个List对MemoryCache有意义吗?或者通过静态已经保存在内存中,所有用户都使用相同的列表并且不需要内存缓存?

如果我们谈论进程内内存,那么 static 字段将与 MemoryCache.Default 中的任何内容具有完全相同的生命周期,但该字段将更直接,因此更快.然而,更大的问题是,如果您在分配列表 后更改列表的内容 ,则会出现竞争条件,因为多个线程可能同时查看数据(不好事物)。使用某种不可变集合(例如 ImmutableList<T>)可能是个好主意,以避免出现任何复杂情况。