我想以一种很好的方式在 double 上传递 <= 运算符
例如
var a = new double[] { 1.0, 2.0, 3.0 };
var b = new double[] { 5.0, 1.0, 3.0 };
例如,我可以使用 Math.Max 函数执行此操作:
var c = a.Zip(b, Math.Max);
但是对于 double 上的 <= 运算符,我必须这样写:
var c2 = a.Zip(b, (double x, double y)=> (x<=y));
与 Math.Max 形式相比很难看。
有没有办法用以下干净的方式之一来写这个:
1 - var c2 = a.Zip(b, (double operator <=));
2 - var c2 = a.Zip(b, Double.LessOrEqualTo);
?
谢谢, J.
最佳答案
在不使用其他方法的情况下,您可以获得的最短的是:
var c2 = a.Zip(b, (x, y) => x <= y);
编译器将从a
和b
类型中为您扣除x
和y
的类型。
如果你不喜欢,你可以声明辅助方法:
public static class DoubleExtensions
{
public static bool LessOrEqual(this double first, double second)
{
return first <= second;
}
}
并使用它:
var c = a.Zip(b, DoubleExtensions.LessOrEqual);
关于c# - 如何以干净的方式将运算符作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835090/