【发布时间】:2018-04-04 10:56:08
【问题描述】:
我有如下收藏
private static readonly Dictionary<string,object> _AppCache = new Dictionary<string,object>;
然后我想知道哪个更好用于检查键是否存在(我的键都没有空值)
_AppCache.ContainsKey("x")_AppCache["x"] != null
此代码可能通过不同数量的线程访问
整个代码是:
public void SetGlobalObject(string key, object value)
{
globalCacheLock.EnterWriteLock();
try
{
if (!_AppCache.ContainsKey(key))
{
_AppCache.Add(key, value);
}
}
finally
{
globalCacheLock.ExitWriteLock();
}
}
更新
我更改了代码以使用字典将问题的焦点集中在Conatinskey or Indexer
【问题讨论】:
-
你应该使用
Dictionary<K,V> -
@SLaks 背后的原因是什么?
-
@RezaRahmati 类型安全。
-
@SLaks Hastable 不是类型安全的?字典不是自己的哈希表吗?
-
@RezaRahmati 使用
Hashtable,你可以使用_AppCache.Add(5, value),因为很明显你每个人都想使用string键。如果你使用Dictionary<string, object>,那行代码会被编译器捕获。