如果只有一个方法还有必要用委托么?

问题描述

如果只有一个方法还有必要用委托么?
在委托这个地方卡了很久,在网上也看了很多文章,基本上都是说的委托的语法,偶尔有介绍使用场景,但是还是一直没弄明白,总有点迷迷糊糊的,做技术就应该吧问题搞的明明白白,要不然还不如不搞,希望大家给讲解下这个问题。谢谢了
比如下面的代码

         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

如果只有一个方法还有必要用委托么?的相关文章

link中调用一个方法,出现两个括号是什么意思?比如LoadEvent()();这个有什么用?

问题描述 link中调用一个方法,出现两个括号是什么意思?比如LoadEvent()();这个有什么用? link中调用一个方法,出现两个括号是什么意思?比如LoadEvent()();这个有什么用? 解决方案 有没有更进一步的代码,看下LoadEvent()返回的是什么类型,是不是返回的是一个委托?如果是委托,可以继续调用.

谁有多线程代码!!我想实现10个线程同时执行一个方法!

问题描述 我想10个线程同时执行一个方法,但是每个方法传入的参数是不一样的!我在网上找了些代码,但是不行,造成线程混乱,谁能教教我啊!!想要实现的是:10个线程同时去登陆网站,然后采集东西.当然我也有10个用户名.10个线程每个线程对应一个用户. 解决方案 解决方案二:分太少了.不然老夫贴出来解决方案三:ThreadPool.QueueUserWorkItem();解决方案四:给你个多线程的例子privatevoidbtnDataUp_Click(objectsender,RoutedEvent

java-如何在页面调用一个方法获取它的值

问题描述 如何在页面调用一个方法获取它的值 <%String strid = request.getParameter(""id"");String giftid=new String(request.getParameter(""id""));System.out.println(strid);int gid=Integer.parseInt(strid);System.out.println(gid);Gift gt

在adodb.php中有没有一个方法可以返回 update语句,影响的行数

问题描述 在adodb.php中有没有一个方法可以返回 update语句,影响的行数 如题在adodb.php中有没有一个方法可以返回 update语句,影响的行数

不用模板,只用ASP+FSO生成静态HTML页的一个方法

asp+|fso|静态|模板 FSO生成静态HTML文件的时候替换模板标签一直是一个很麻烦的问题,至少我是这么认为的,还要别外做一个模板,麻烦!,我今天看见有一个方法可以解决这个问题 如一个正常的index.asp页面,并且用ASP代码调出数据库中的内容,另建一个makehtml.asp的页面,加入一个textarea域,假设为name="body",将index.asp在textarea里调出来,如:<textarea name="body"><

PHP 实现代码复用的一个方法 traits新特性

 这篇文章主要介绍了PHP 实现代码复用的一个方法,traits的新特性的相关资料,需要的朋友可以参考下     在阅读yii2源码的时候接触到了trait,就学习了一下,写下博客记录一下. 自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits. Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制.Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集.Traits 和类组合的语义是定义了一种方式来减少复杂性,

安卓,怎样自定义一个方法,使之一直运行,处于监听状态?

问题描述 安卓,怎样自定义一个方法,使之一直运行,处于监听状态? 普通的方法,运行完就过了.但是我想定义这样一个方法,在程序,起码是在这个activity处于前台的时候,能一直的运行,监听着指定的事件的发生并做出处理. 例如安卓那些OnClickListener的onClick,还有onTouchEvent之类的,他是这个activity只要处于前台和用户交互,他就能一直运行,当有指定的事件发生的时候就能处理.而不是运行完就过去了.请问这样的方法怎样能实现? 解决方案 写服务呀,一直运行在后台,

java-JFreechart重写坐标轴设置的一个方法

问题描述 JFreechart重写坐标轴设置的一个方法 柱状图默认都是以0为起始点 然后我有负值输入,那么柱子就在0下面 比0大的柱子在0上面, 我想修改为以某个数(比如1)为分界点 没有自带的函数 想知道如何重写方法 谢谢 解决方案 你好,你使用JFreeChar感觉怎么样,我这几天也想,用用JFreeChar,你有什么技术文档吗,可以发给我一份吗?我们可以一起研究一下.

java中在使用log4j中的error打印日志时,怎么能捕获到,然后去调用另一个方法。

问题描述 java中在使用log4j中的error打印日志时,怎么能捕获到,然后去调用另一个方法. 使用log4j中的error打印日志时,怎么能捕获到,然后去调用另一个方法. 解决方案 java日志信息 log4j 使用方法java日志信息 log4j 使用方法java日志信息 log4j 使用方法 解决方案二: 一般的error级别的日志都是在异常分支中打印的.你可以直接在catch分支里面调用需要的方法.