【发布时间】:2013-06-06 20:45:57
【问题描述】:
我正在尝试编写一个具有 LINQ 查询的方法。
所以这个方法:
DoSomething(Operator operator, string name)
{
// if operator is ==
// use == as comparison
// if operator is !=
// use != as comparison
// pseudo query
var result = from rec in collection
where rec.name operator name
select rec;
}
我知道这可以使用委托、Func 和 Action 来完成,它的解释非常优雅 here。
但我想知道的是为什么一个方法只需要一个类型? 为什么 CLR 不允许将运算符作为参数传递给方法? 设计背后的想法是什么?
【问题讨论】:
-
您的伪代码实际上并没有使用您在任何地方传递的运算符。
-
可能是因为功能不是worth more than 100 points
-
我想问一下,你为什么要实现这个功能?
-
在这个具体的例子中,你不应该关心你正在应用某种二元运算,而应该简单地接受一个谓词,比如
Predicate<string>或Func<string, bool>。