gpt4 book ai didi

c# - 不可变类型是否适用于此缓存问题

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:28 26 4
gpt4 key购买 nike

有时我会遇到一个问题,我从缓存中获取一个对象并需要更改它的某些属性,而当我将该对象放入缓存时这些属性并不存在。

假设我有一个类

public void class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Identifier { get; set; }
public bool HasNotifications { get; set; }
}

FirstNameLastName 存储在数据库中。当对象从数据库中获取时,它被放入缓存中,HasNotifications 为假。

Person 对象可能在应用程序的多个部分中使用,HasNotifications 将根据应用程序的部分设置为不同的值。

更改 HasNotifications 会更改缓存中的对象,并且值不再可预测。

这个例子看起来有点做作,因为有很简单的方法可以避免这个问题。我处理的应用程序有问题,因为有时您处理的对象是否从缓存中检索并不明显。

如果我使用 Person 的不可变版本,是否可以避免该问题?这是 Immutability 应该处理的用例吗?

最佳答案

缓存应该用于那些不太可能经常改变的对象。听起来您的大部分对象都保持不变,除了 HasNotifications?如果是这样,我会考虑一种方法,尽可能从缓存对象中删除此逻辑。

关于c# - 不可变类型是否适用于此缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28297765/

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