gpt4 book ai didi

c# - 如何正确处理向字典添加新项目?

转载 作者:行者123 更新时间:2023-12-04 18:19:14 25 4
gpt4 key购买 nike

我有一个 ASP.NET 应用程序,我在其中使用静态类作为缓存。该静态类内部是内部字典,其中包含缓存的对象。当然,静态类中有 Add/Remove/Clear 之类的方法...看起来如下:

public static class CacheManager
{
private static Dictionary<string, object> cacheItems = new Dictionary<string, object>();

private static ReaderWriterLockSlim locker = new ReaderWriterLockSlim();

public static Dictionary<string, object> CacheItems
{
get
{
return cacheItems;
}
}

public static void AddCacheItem(string key, object data)
{
locker.EnterWriteLock();
try
{
cacheItems.Add(key, data);
}
finally
{
locker.ExitWriteLock();
}
}

...
}

当 ASP.NET 应用程序运行时,这些项目被添加到缓存(字典)中。我只想问我是否应该在 Add 方法中检查是否已经以这种方式添加了 key :
    public static void AddCacheItem(string key, object data)
{
locker.EnterWriteLock();
try
{
if (!cacheItems.ContainsKey(key))
{
cacheItems.Add(key, data);
}
}
finally
{
locker.ExitWriteLock();
}
}

还是将其保留在第一个代码片段中?

先感谢您。

最佳答案

您可以实现另一种方法 TryAdd

public static bool TryAddCacheItem(string key, object data)
{
locker.EnterWriteLock();
try
{
if (cacheItems.ContainsKey(key))
{
return false;
}
cacheItems.Add(key, data);
return true;
}
finally
{
locker.ExitWriteLock();
}
}

我也建议使用 ConcurrentDictionary . Here是 ConcurrentDictionary 的代码。

关于c# - 如何正确处理向字典添加新项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027369/

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