gpt4 book ai didi

c# - 以 Func 为键的字典

转载 作者:可可西里 更新时间:2023-11-01 09:02:12 25 4
gpt4 key购买 nike

我想知道这是否是字典键的明智选择?我想要做的是使用表达式作为字典中的键,例如:

    var map3 = new Dictionary<Func<int, bool>, int>();
map3.Add((x) => x % 2 == 0, 1);
map3.Add((x) => x % 10 == 0, 2);
// ...

var key = map3.Keys.SingleOrDefault(f => f(2));
// key = (x) => x % 2
// map3[key] = 1

这个想法比使用大的 if-else 或 switch 语句更简洁。

这有意义吗?它会工作吗?有没有更简单的方法?

最佳答案

考虑到您使用 map 的方式,使用 List<Tuple<Func<int,bool>,int>> 会更好,因为检查 lambda 的顺序将不再是任意的,就像在基于散列的字典中一样。这种方法还可以让您跳过查找步骤:

var map3 = new List<Tuple<Func<int,bool>,int>> {
new Tuple<Func<int,bool>,int>((x) => x % 2 == 0, 1)
, new Tuple<Func<int,bool>,int>((x) => x % 10 == 0, 2)
};
var t = map3.SingleOrDefault(t => t.Item1(2));
if (t != null) {
var v = t.Item2;
}

关于c# - 以 Func 为键的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13409425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com