Tag: trygetvalue

是否有任何实现按键删除并同时获取值?

我正在做一个性能关键的程序(很少的学术内容),我正在寻求尽可能优化(不像它certificate“这是”瓶颈)。 我有一个自定义字典结构(.NET Dictionary的包装器),我会不断删除一个阶段的项目(通过Key值)。 我需要删除项目的Value 。 现在我必须这样做: T t; if !TryGet(key, out t) return false; Remove(key); 这是两次查找。 我会喜欢这个: public bool Remove(S key, out T value) { // implementation } 我知道框架中没有任何内容,但是某处有实现吗? 如果是这样,我会用那个更改我的支持词典。 编辑:嗯,我知道TryGetValue和Remove都是O(1)。 只知道是否有任何集合结构只能在一次查找中产生相同的效果。 正如我所说,我正在努力尽可能地优化。 只是知道。

如何调用Dictionary .TryGetValue()其中K:Predicate ,V:enum

我有Dictionary<Predicate, SomeEnum> : var dic = new Dictionary<Predicate, SomeEnum> { { (d) => d d > 90, SomeEnum.Bar } }; 我想像这样打电话给TryGetValue(K, out V) : dic.TryGetValue(99) 并收到 SomeStruct.Bar 但TryGetValue()第一个参数是Predicate ,而不仅仅是T 我怎么能做我想做的事? 我发现只有一个肮脏的解决方法: var kpv = dic.FirstOrDefault(p => p.Key(99)); if (kpv.Key != null) var result = kpv.Value; 还有其他方法吗? 或者如何正确实现我的想法? – 声明一个键不是一个常量,而是一个段。