首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MemoryCache使用浅拷贝?

为什么MemoryCache使用浅拷贝?
EN

Stack Overflow用户
提问于 2017-01-23 12:15:04
回答 1查看 547关注 0票数 0

我只是想知道,为什么MemeoyCache使用浅拷贝来存储缓存数据?有什么建议吗?如果memoryCache只使用数据引用,那么CacheMemory中的数据存储类型是什么。

代码语言:javascript
复制
public static void TestmemoryCacheCloning()
        {
            var memoryCache = new MemoryCache("Test");
            var employee = new Employee
            {
                EmployeeId = 1,
                Name = "A",
                Aaddress = new Aaddress
                {
                    City = "Delhi",
                    State = "Delhi",
                    Country = "India"
                }
            };

            memoryCache.Add("Test", employee, DateTimeOffset.Now.AddDays(1));
            Console.WriteLine(employee.GetHashCode());
            var output = memoryCache.Get("Test");
            Console.WriteLine(output.GetHashCode());

        }

输出:

代码语言:javascript
复制
49496962
49496962
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 15:07:10

是什么让你认为MemoryCache使用浅薄的拷贝呢?

AFAIK只存储传入的对象,不进行任何复制。

因此,如果事后对该对象进行更改,这些更改也会影响缓存对象(因为它们是同一个对象)。显然,这会引起问题,特别是当你不知道它正在发生的时候。

您可以编写自己的缓存类,它生成一个副本和缓存,然后您需要在浅层和深度之间做出决定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41806139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档