[C#]delegate基础入门
参考代码1:
using System; namespace DelegateDemo
{
class Program
{
public delegate void Expresser();
static void Main(string[] args)
{
//委托, delegate
Test t = new Test();
Expresser exp1 = new Expresser(t.MyExpressApple);
Expresser exp2 = new Expresser(t.MyExpressMail);
Expresser exp3 = exp2;
exp1();
exp3();
/////////////////////////////////////
Expresser exp11 = new Expresser(Test2.MyExpressBook);
Expresser exp22 = new Expresser(Test2.MyExpressPen);
exp11();
exp22();
}
}
class Test
{
public void MyExpressMail()
{
Console.WriteLine("寄送邮件");
}
public void MyExpressApple()
{
Console.WriteLine("寄送苹果");
}
}
class Test2
{
public static void MyExpressBook()
{
Console.WriteLine("寄送书籍");
}
public static void MyExpressPen()
{
Console.WriteLine("寄送笔");
}
} }
参考代码2:
using System; namespace ArithDemo
{
class Program
{
public delegate double ArithDelegater(int a,int b); static void Main(string[] args)
{
ArithDelegater[] a= new ArithDelegater[4];
a[0]= new ArithDelegater(Arith.Add);
a[1] = new ArithDelegater(Arith.Sub);
a[2] = new ArithDelegater(Arith.Mul);
a[3] = new ArithDelegater(Arith.Div); for(int i=0;i<4;i++)
{
Console.WriteLine(a[i](100,30));
} }
}
class Arith
{
public static double Add(int a,int b)
{
return a + b;
}
public static double Sub(int a, int b)
{
return a - b;
}
public static double Mul(int a, int b)
{
return a * b;
}
public static double Div(int a, int b)
{
return (double)a / b;
}
}
}
参考代码3:
using System; namespace ArithDemo
{
class Program
{
public delegate void ArithDelegater(int a, int b); static void Main(string[] args)
{
ArithDelegater a = new ArithDelegater(Arith.Add);
a+= new ArithDelegater(Arith.Sub);
a+= new ArithDelegater(Arith.Mul);
a+= new ArithDelegater(Arith.Div);
a(100, 30);
Console.WriteLine("--------------");
a.Invoke(1000, 300);
}
}
class Arith
{
public static void Add(int a, int b)
{
Console.WriteLine(a + b);
}
public static void Sub(int a, int b)
{
Console.WriteLine(a - b);
}
public static void Mul(int a, int b)
{
Console.WriteLine(a * b);
}
public static void Div(int a, int b)
{
Console.WriteLine((double)a / b);
}
}
}
[C#]delegate基础入门的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- 「译」JUnit 5 系列:基础入门
原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...
- .NET正则表达式基础入门
这是我第一次写的博客,个人觉得十分不容易.以前看别人写的博客文字十分流畅,到自己来写却发现十分困难,还是感谢那些为技术而奉献自己力量的人吧. 本教程编写之前,博主阅读了<正则指引>这本入门 ...
- 从零3D基础入门XNA 4.0(2)——模型和BasicEffect
[题外话] 上一篇文章介绍了3D开发基础与XNA开发程序的整体结构,以及使用Model类的Draw方法将模型绘制到屏幕上.本文接着上一篇文章继续,介绍XNA中模型的结构.BasicEffect的使用以 ...
- 从零3D基础入门XNA 4.0(1)——3D开发基础
[题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...
- Shell编程菜鸟基础入门笔记
Shell编程基础入门 1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...
- [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.
前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...
- [Spring框架]Spring AOP基础入门总结一.
前言:前面已经有两篇文章讲了Spring IOC/DI 以及 使用xml和注解两种方法开发的案例, 下面就来梳理一下Spring的另一核心AOP. 一, 什么是AOP 在软件业,AOP为Aspect ...
- RobotFramework - 基础入门
Robot Framework Wiki HomePage Robot Framework User Guide Robot Framework documentation Robot Framewo ...
- .NET ORM 的 “SOD蜜”--零基础入门篇
PDF.NET SOD框架不仅仅是一个ORM,但是它的ORM功能是独具特色的,我在博客中已经多次介绍,但都是原理性的,可能不少初学的朋友还是觉得复杂,其实,SOD的ORM是很简单的.下面我们就采用流行 ...
随机推荐
- simlink物体仿真中连接scope
该模块用于连接scope和multibody仿真中物理模型的输出值.
- 100多个常用 API 接口整理大全
聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务,下面就罗列一些免费的各类API接口. 手机号码归属地API接口: https://www.juhe.cn/docs/ ...
- 关于Java的惰性求值
最近在学scala的时候,函数传参可以是传名参数,或者传值参数 1.Scala中的传名参数是什么意思?lazy关键字有什么作用? Scala官方文档的定义是:传名参数 仅在被使用时触发实际参数的求值运 ...
- pycharm中运行shell脚本
为了跑一份深度学习工程文件,这份文件夹有好几份子文件夹,子文件夹里有.sh脚本.我以前跟盛哥来跑强化学习的代码时,盛哥教我装了git,所以用git是可以来跑脚本的.费力搞了半天装cygwin来跑,实际 ...
- 页面布局 Wrap 组件
一.Flutter RaisedButton 定义一个按钮 Flutter 中通过 RaisedButton 定义一个按钮.RaisedButton 里面有很多的参数,这一讲我们只是简单的进行使用. ...
- 【音视频】FFmpeg打开视频 | 保存图片
1.初始化FFmpeg av_register_all(); //初始化FFMPEG 调用了这个才能正常使用编码器和解码器 但是这个函数如今已经没什么用了,它的就是把你定义和系统初始化的编码器和解码器 ...
- js判断数据类型 && 判断是否为标准json格式
/** * 1. js判断对象的好方法 * 2. 判断是否为json格式化数据 * * Author: shujun * Date: 2020-8-09 */ import {print} from ...
- NAT的转换
NAT的转换 拓扑图 Sever0的IP地址:192.168.0.1/24 网关:192.168.0.254 PC0的IP地址:192.168.0.100/24 PC1的IP地址:192.168.0. ...
- 老生常谈:String s1 = new String("abc") 创建了几个字符串对象及8 种基本类型的包装类和常量池
将创建 1 或 2 个字符串.如果池中已存在字符串常量"abc",则只会在堆空间创建一个字符串常量"abc".如果池中没有字符串常量"abc" ...
- 解决“chrome正受到自动测试软件的控制”信息栏显示问题
在使用Selenium WebDriver启动谷歌浏览器Chrome时,在新启动的浏览器地址栏下方经常会显示一行提示信息:"chrome正受到自动测试软件的控制",英文的就是&qu ...