添加项目后,Dictionary在ContainsKey上返回false

Kar*_*ták 1 c# dictionary containskey

我有一个字典声明如下

IDictionary<string, object> _objectIds = new Dictionary<string, object>();
Run Code Online (Sandbox Code Playgroud)

我遇到了一些问题,它发现实例返回false作为ContainsKey方法的结果,从监视窗口我确定该项目在那里.所以我创建了辅助方法

private bool IdsContainsKey(string key)
{
  lock (syncObject)
  {
     lock (_objectIds)
     {
       if (_objectIds.ContainsKey(key))
         return true; // A
       if (_objectIds.ContainsKey(key))
         return true; // B
       return _objectIds.ContainsKey(key); // C
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的调试会话期间,当方法退出到位B时遇到这种情况,有时我对C返回true.有谁能够帮我?谢谢.

Ode*_*ded 5

您需要确保放置lock每个使用的地方_objectIds,以确保正确同步.