问题描述
- 如果只有一个方法还有必要用委托么?
- 在委托这个地方卡了很久,在网上也看了很多文章,基本上都是说的委托的语法,偶尔有介绍使用场景,但是还是一直没弄明白,总有点迷迷糊糊的,做技术就应该吧问题搞的明明白白,要不然还不如不搞,希望大家给讲解下这个问题。谢谢了
比如下面的代码static Func<int int int> CalculateHandler = (x y) => x + y; static void Main(string[] args) { var result = CalculateHandler(5 10); Console.WriteLine(result); }
直接写个方法不也是很简短么,而且还少了个变量
static int Calculate(int x int y) { return x + y; }
也许你要说,以后你增加减法,除法更多的运算的时候可以复用...
我开头已经说了“只有一个方法的时候”
解决方案
- 如何取舍,是否需要委托,甚至于是否需要使用某个设计模式等,并不是语法上能解决的问题。你现在这样问谁也无法回答你。这个是根据业务来选择的。
- 举个例子来说。
- 与一个设备通过TCPIP连接。设备每次回返回当时的交易内容。由于只有一个类型的数据包需要进行解析,因此就直接写了。
- 随后发现需要获得设备的状态,于是重新定义了一个类型的数据包。现在两个包了,是否需要使用委托呢?还是直接if判断后分别解析?
- 随着业务的发展,通讯使用到的数据包类型越来越多,这时候你肯定会觉得要使用委托了。
- 那么现在反过来,你觉得在刚开始的时候,是否需要使用委托呢?
解决方案二:
这只是举例**怎么做委托**,至于**要不要用委托**得你自己取舍,不是为了用委托而委托。
解决方案三:
我就是想知道怎么取舍,特别是看到Lambda表达式的那些例子的时候更晕
delegate int del(int i);static void Main(string[] args){ del myDelegate = x => x * x; int j = myDelegate(5); //j = 25}
不是说的委托就是为了解耦么,本来应该是把运算提取出来作为一个方法,现在又写会到main方法中,这不是本末倒置么?
解决方案四:
委托相当于C语言的函数指针。
常用于事件处理
时间: 2024-11-08 17:11:58