4

我刚刚浏览了“C# in Depth”并偶然发现了以下代码:

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

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

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

  2. 你同意这里超载是一个设计错误operator+吗?

  3. 什么是更好的语法来实现它operator+在这里所做的一切?

4

2 回答 2

4

编写delegate1 + delegate2将创建第三个委托实例,它结合了前两个,调用两个委托中的所有函数。
它主要用于事件。

文档

于 2011-02-06T14:24:32.630 回答
2

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

当然,这不是这里发生的事情,但我想让你正确地回答你问题的数学方面!

于 2011-02-06T14:24:57.480 回答