我在进行一些单元测试时发现了一些令人惊讶的行为。如果您将.NET ConcurrentDictionary<K, V>
实例(未使用标准通用Dictionary<K, V>
进行测试)转换为IDictionary
,然后使用索引器,则不再引发缺少的键异常:< / p>
[TestMethod]
public void NotInDictionaryNative()
{
var dict = new ConcurrentDictionary<string, int>();
dict["abc"] = 3;
dict["def"] = 4;
Assert.IsTrue( ( (IDictionary)dict )["q"] == null );
}
本单元测试通过!但是如果你拿出演员阵容,那就失败了。这似乎是一种危险的行为:明确的实现不应该与普通的公共索引器有很大差异,是不是应该这样做?
所以,如果我所拥有的唯一已知类型是IDictionary
,我如何检查是否存在没有循环遍历所有键并进行比较的键?