说明(2017-11-20 15:14:18):

1. 委托一直稀里糊涂的,有人说简单,有人说难,艹你们!

2. 其实主要是因为,平时不用委托也能解决大部分问题,所以都没有特意去用,网上也没有什么很好的应用例子,基本都是为了解释委托,生造出来的例子,没什么应用价值。

3. 这个计算器委托示例,是CZ的蒋坤老师讲的,还是比较容易学习的,他把委托的使用定为五步:1.准备方法。2.准备委托类型。3.定义委托变量。4.授权方法。5.调用方法。

4. 简单的委托,只需要返回一个参数就可以了。计算器因为是有4个加减乘除的方法,开始我还想着怎么把4个方法绑定到一个委托上。后来看了视频才知道,需要新建一个返回值是委托的Factory方法,用来返回这四个方法的返回值。

5. 这个计算器不用委托也能做,目前我知道的要用委托的地方只有杨洪波在三层里讲的,winform里的窗体传值。

6. 后面还有一个事件,说是比委托安全,因为委托人人都能调用(这么随便?),等看到再说吧!

7. 为啥现在突然回过头来看委托?是因为asp.net看到最后,不懂委托实在是看不下去了。。

代码:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace _03_计算器
{
class Program
{
//2.准备委托类型。声明委托,返回值、参数与运算符方法相同。
public delegate double MyDel(double num1, double num2); static void Main(string[] args)
{ Console.WriteLine("输入数字1:");
double num1 = double.Parse(Console.ReadLine());
Console.WriteLine("输入运算符(+_*/):");
string opera = Console.ReadLine();
Console.WriteLine("输入数字2:");
double num2 = double.Parse(Console.ReadLine());
//3.定义委托变量。注意不能加括号!!!
MyDel myDel;
//4.授权方法。
myDel= Factory(opera);
if (myDel != null)
{
//5.调用方法。
//等同于Factory()。
double result = myDel(num1, num2);
Console.WriteLine("计算结果:{0}{1}{2}={3}", num1, opera, num2, result);
}
else
{
Console.WriteLine("运算符有误");
} Console.ReadKey(); }
//定义委托方法(定义一个返回委托类型的方法)
public static MyDel Factory(string opera)
{
switch (opera)
{
case "+":
return Add;
case "-":
return Minus;
case "*":
return Multiply;
case "/":
return Divide;
default:
return null;
}
}
//1.准备运算符方法。
private static double Add(double num1, double num2)
{
return num1 + num2;
}
private static double Minus(double num1, double num2)
{
return num1 - num2;
}
private static double Multiply(double num1, double num2)
{
return num1 * num2;
}
private static double Divide(double num1, double num2)
{
return num1 / num2;
} }
}

C#学习笔记(26)——委托计算器的更多相关文章

  1. [原创]java WEB学习笔记26:MVC案例完整实践(part 7)---修改的设计和实现

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  2. 《C# 语言学习笔记》——委托

    委托是一种可以把引用存储为函数的类型. 委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字.委托的声明制定了一个返回类型和一个参数列表. 在定义了委托后,就可以声明该委托类型的变量 ...

  3. ‎Cocos2d-x 学习笔记(26) 从源码学习 DrawCall 的降低方法

    [Cocos2d-x]学习笔记目录 本文链接:https://www.cnblogs.com/deepcho/cocos2dx-drawcall-glcalls 1. 屏幕左下角 我们通常在Cocos ...

  4. [读书笔记]C#学习笔记二: 委托和事件的用法及不同.

    前言:  C#委托是什么 c#中的委托可以理解为函数的一个包装, 它使得C#中的函数可以作为参数来被传递, 这在作用上相当于C++中的函数指针. C++用函数指针获取函数的入口地址, 然后通过这个指针 ...

  5. [C#学习笔记]Func委托与Action委托

    学习一项新知识的时候,最好的方法就是去实践它. 前言 <CLR via C#>这本神书真的是太有意思了!好的我的前言就是这个. Fun 如果要用有输入参数,有返回值的委托,那么Func委托 ...

  6. js学习笔记-事件委托

    通过事件委托,你可以把事件处理器绑定到父元素上,避免了把事件处理器添加到多个子级元素上.从而优化性能. 事件代理用到了事件冒泡和目标元素.而任何一个元素的目标元素都是一开始的那个元素. 这里首先要注意 ...

  7. Linux下汇编语言学习笔记26 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  8. MFC学习笔记2---简单计算器

    前言 学习了鸡啄米网页的前三部分后,我们就可以做一个小软件出来了,我选择先做一个计算器. 这是Win7系统自带的计算器: 为了提升成就感,我将计算器的大部分内容去除,于是就变成这样: 这样就只剩下了1 ...

  9. PHP学习笔记02——简易计算器

    <!DOCTYPE html> <html> <head> <title>PHP简易计算器</title> </head> &l ...

  10. python基础课程_学习笔记26:编程的乐趣

    编程的乐趣 编程柔术 当你坐下来,打算如何组织计划要定时,具体程序,然而,无论什么经验.在实现时间的函数的,你会逐渐学会了原来的设计,实用的新知识.我们不应该忽视沿途汲取的教训,相反,它们用于其他设计 ...

随机推荐

  1. c# 中内部类的简单介绍 C#内部类

    最近在看java一方面的书籍,看到一个很奇怪的问题,java类中还可以再定义一个类,这种结构非常特殊!后来才发现我知识浅薄了,原来C#中也有内部类,之前都一直没有注意过这个语法结构! 使用内部类有这样 ...

  2. 最烂编程语言得主:javascript

    C++在我脑中一直是一门缺乏设计和远见的语言,其设计者也是缺少主见的人(我承认我对c++有一定偏见),在我看来,C++从一开始就是堆叠语言特性,成为最流行的语言,,只是这个时代将它推到了最前列,我心中 ...

  3. 使用 Apache Commons CSV 读写 CSV 文件

    有时候,我们需要读写 CSV 文件,在这里给大家分享Apache Commons CSV,读写 CSV 文件非常方便. 具体官方文档请访问Apache Commons CSV. 官方文档已经写得很详细 ...

  4. iOS提交iTunes审核时出现Invalid Binary错误

    xcode5编译一个xcode4时写的代码,提交iTunes审核时出错. 1.iOS提交审核时出现Invalid Binary错误 2.收到邮件: iPhone 5 Optimization Requ ...

  5. 【Unity】第12章 导航网格和寻路

    开发环境:Win10.Unity5.3.4.C#.VS2015 创建日期:2016-05-09 一.简介 NavMesh(导航网格)是3D游戏世界中用于实现"动态"物体自动寻路的一 ...

  6. hibernate的flush()、refresh()、clear()针对一级缓存的操作的区别

    首先session是有一级缓存的,目的是为了减少查询数据库的时间,提高效率,一级缓存的生命周期和session是一样的, session.flush()和session.clear()就针对sessi ...

  7. 6 Multi-Cloud Architecture Designs for an Effective Cloud

    https://www.simform.com/multi-cloud-architecture/ Enterprises increasingly want to take advantage of ...

  8. DataTable的初始化与事件注册

    TypeScript代码: let tabledata = data as any[]; if (this.dataTable) { this.dataTable.clear(); this.data ...

  9. Redhat系统部署安装Splunk

    一.下载安装包 可以从国内网站进入:http://10data.com/splunk/ 下载前需要注册一个splunk账号,注册后便可以提供下载,安装包名称:splunklight-6.5.1-f74 ...

  10. git命令(10):git 常用操作,撤销修改(2)

    一. 创建与合并分支 1. 从master分支创建dev分支并切换到dev分支: git checkout master git checkout -b dev 其中,git checkout -b ...