添加两个功能?

时间:2011-02-06 14:21:21

标签: c# operator-overloading functor addition

我只是浏览了“深度中的C#”并偶然发现了以下代码:

Func<string> stringFunc = () => "";
Func<object> objectFunc = () => new object();
Func<object> combined = objectFunc + stringFunc;

我很确定在数学中添加两个函数毫无意义,那么为什么任何程序员都希望函数的二进制operator+重载?这似乎是为什么重载运算符可以造成伤害的一个完美的例子(我通常支持运算符重载的想法)。

  1. 在C#中添加两个函数意味着什么? (我是C#noob,所以请耐心等待。)

  2. 你是否同意在这里重载operator+是一个设计错误?

  3. operator+这里做什么是更好的语法?

2 个答案:

答案 0 :(得分:3)

delegate1 + delegate2将创建第三个委托实例,它结合前两个,调用两个代理中的所有函数。
它主要用于活动。

Documentation

答案 1 :(得分:2)

在数学中添加两个函数非常有意义。当您认为函数是运算符时,所有这些运算符的空间都是线性空间(在某些条件下)。这是一个非常富有成效的观点,可以产生许多有用的数学见解。

当然,这不是这里发生的事情,但我想把你放在问题的数学方面!