C#学习笔记(26)——委托计算器
说明(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)——委托计算器的更多相关文章
- [原创]java WEB学习笔记26:MVC案例完整实践(part 7)---修改的设计和实现
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 《C# 语言学习笔记》——委托
委托是一种可以把引用存储为函数的类型. 委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字.委托的声明制定了一个返回类型和一个参数列表. 在定义了委托后,就可以声明该委托类型的变量 ...
- Cocos2d-x 学习笔记(26) 从源码学习 DrawCall 的降低方法
[Cocos2d-x]学习笔记目录 本文链接:https://www.cnblogs.com/deepcho/cocos2dx-drawcall-glcalls 1. 屏幕左下角 我们通常在Cocos ...
- [读书笔记]C#学习笔记二: 委托和事件的用法及不同.
前言: C#委托是什么 c#中的委托可以理解为函数的一个包装, 它使得C#中的函数可以作为参数来被传递, 这在作用上相当于C++中的函数指针. C++用函数指针获取函数的入口地址, 然后通过这个指针 ...
- [C#学习笔记]Func委托与Action委托
学习一项新知识的时候,最好的方法就是去实践它. 前言 <CLR via C#>这本神书真的是太有意思了!好的我的前言就是这个. Fun 如果要用有输入参数,有返回值的委托,那么Func委托 ...
- js学习笔记-事件委托
通过事件委托,你可以把事件处理器绑定到父元素上,避免了把事件处理器添加到多个子级元素上.从而优化性能. 事件代理用到了事件冒泡和目标元素.而任何一个元素的目标元素都是一开始的那个元素. 这里首先要注意 ...
- Linux下汇编语言学习笔记26 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- MFC学习笔记2---简单计算器
前言 学习了鸡啄米网页的前三部分后,我们就可以做一个小软件出来了,我选择先做一个计算器. 这是Win7系统自带的计算器: 为了提升成就感,我将计算器的大部分内容去除,于是就变成这样: 这样就只剩下了1 ...
- PHP学习笔记02——简易计算器
<!DOCTYPE html> <html> <head> <title>PHP简易计算器</title> </head> &l ...
- python基础课程_学习笔记26:编程的乐趣
编程的乐趣 编程柔术 当你坐下来,打算如何组织计划要定时,具体程序,然而,无论什么经验.在实现时间的函数的,你会逐渐学会了原来的设计,实用的新知识.我们不应该忽视沿途汲取的教训,相反,它们用于其他设计 ...
随机推荐
- springboot(六):如何优雅的使用mybatis
这两天启动了一个新项目因为项目组成员一直都使用的是mybatis,虽然个人比较喜欢jpa这种极简的模式,但是为了项目保持统一性技术选型还是定了 mybatis.到网上找了一下关于spring boot ...
- linux达人养成计划学习笔记(四)—— 压缩命令
一.常见的压缩格式: 二..zip格式压缩 1.压缩文件.文件夹 zip 压缩后文件名(.zip结尾) 压缩文件名zip -r 压缩后文件夹(.zip结尾) 压缩文件 2.解压缩 unzip 压缩文件 ...
- ceph mon更换ip地址
一.概述: 数据中心的集群从A地迁移到B地, 更改的信息包括: 集群内所有节点的ip 集群内所有节点的主机名 由ceph文档可知:http://docs.ceph.com/docs/hammer/ra ...
- 安卓ListView中CheckBox的使用(支持Item列表项的删除,全选,全不选)
ListView 自身提供了 CheckBox 只需要添加一行代码 getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 但是这种实现 ...
- 【Oracle】详解ORACLE中的trigger(触发器)
本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2. ...
- 在Linux上yum安装运行Redis,只能安装2.4.10(主从)
Installing Redis on CentOS 6.4 First, install the epel repo sudo rpm -Uvh http://download.fedoraproj ...
- Docker 学习笔记 ---Docker组件
Docker组件 1. 客户端:dockerclient 2. 服务端:dockerserver 3. Docker镜像 4. Registry 5. Docker 容器 Docker客户端 ...
- Java Nashorn--Part 1
伴随 Java 8 的发布,Oracle 也一同发布了 Nashorn,它是在 Java 虚拟机上运行 Javascript 语言的一个引擎.Nashorn 的设计是为了替换最初的运行在 JVM 上的 ...
- word中公式居中编号在最右端
1 显示标尺 2 设置居中制表符 3 在对应位置做标记 首先让公式居中 使用居中制表符在标尺的灰色地带标记位置,1)标记公式位置,鼠标左击 2)标记右边标号位置,注意和右边留有一定边距 4 公式左对齐 ...
- ios使用kvc机制简化对json的解析
在 ios开发中,我们经常需要对服务器的传回来的json进行解析,特别是对哪些字段特别多的就会又烦躁的情绪.tmd都是一样的东西,要为每个property赋值,真是累人啊.举个简单的例子吧.服务器会过 ...