gpt4 book ai didi

c# - 缓存被修改而不是局部变量(通过 ref 传递)

转载 作者:行者123 更新时间:2023-11-30 19:31:58 25 4
gpt4 key购买 nike

我正在编写一个 .net C# 应用程序。

我从 xml 文件中检索一些数据,将数据缓存到 .net 缓存中,然后从我的方法中返回它。我对数据执行一些处理并将其返回到我的应用程序的另一部分。

下一次调用,我从缓存中读取、处理它并返回它等等。

我遇到的问题是,对缓存数据执行的处理似乎修改了缓存而不是局部变量,这意味着下次我从缓存中读取时,返回的是之前处理的已处理数据。

所以看起来缓存返回的数据是ref返回的,不是value返回的。

知道如何防止缓存被修改吗?

最佳答案

内存缓存将存储指向对象的指针。它就像一个全局变量。对缓存项的任何其他变量赋值都将引用同一对象。这对于进程外或分布式缓存是不同的。对于那些类型的缓存,必须从缓存中序列化和反序列化对象。在这些情况下,您将获得副本。

如果你想模拟进程外的行为,你可以复制/克隆一个对象或者序列化/反序列化缓存外的对象。

关于c# - 缓存被修改而不是局部变量(通过 ref 传递),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6117600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com