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