是否可以指定运算符R,其中R可以是算术运算符,关系运算符或逻辑运算符?
例如,计算的函数
c = a R b
在那里我可以指定是否R是+, -, *, /
这可以用C#完成吗?
甲二进制运算符是接受两个操作数的任何功能.使用委托来抽象这个功能很简单,委托基本上是方法(函数)的包装器.
为了更清楚,我们可以定义一个泛型方法,它不再使用指定的参数调用委托,并返回其结果:
public Tout GetResult<TIn, TOut>(TIn a, TIn b, Func<TIn, TIn, TOut> @operator)
{
     return @operator(a, b);
}
您可以使用它来传递参数和运算符的任意组合:
private bool AreEqual(int a, int b)
{
     return a.Equals(b);
}
private int Subtract(int a, int b)
{
     return a - b;
}
然后,您可以使用相同的通用方法执行所需的任何操作:
// use the "AreEqual" operator
bool equal = GetResult(10, 10, AreEqual);
// use the "Subtract" operator
int difference = GetResult(10, 10, Subtract);
使用lambda表达式,您甚至可以通过将其指定为匿名方法来"动态"创建运算符:
// define a "Product" operator as an anonymous method
int product = GetResult(10, 10, (a,b) => a*b);
| 归档时间: | 
 | 
| 查看次数: | 1013 次 | 
| 最近记录: |