[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是很简单的.下面我们就采用流行 ...
随机推荐
- ssh 登陆 Host key verification failed.
报错 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION ...
- protobuf笔记
protobuf的enum .proto的enum类型在编译后,是C++的enum
- 本地JAR包如何上传私有仓库
需求背景 有些第三方的jar包需要手动上传到maven私有仓库,以便通过maven来管理依赖. 为简化手动上传的jar包的操作步骤,所以整了个脚本,在使用时只需修改相应变量即可. 脚本示例 #!/bi ...
- docker镜像原理(一)
在理解什么是docker镜像之前我们需要搞懂虚拟机系统到底是怎么组成的如何实现的,docker中又是如何安装和使用虚拟机系统的,怎样可以高效灵活的切换系统发行版等问题 一.centos7系统长什么样 ...
- react 脚手架搭建项目 报错C:\Program Files\nodejs\node_cache\_logs\2022-12-28T14_38_28_286Z-debug-0.log
报错内容: 解决方法: 第一步: 删除C:\Program Files\nodejs\node_cache\_logs 目录下所有文件 第二步:切换镜像 npm config set registry ...
- Python学习笔记文件读写之生成随机的测试试卷文件
随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...
- 记SpringBoot中 Consider defining a bean of type 'com.xxx.classname' in your configuration 错误的解决办法
一.背景 笔者项目中.有两个子模块代码.需要分别在不同的包名中运行,假设一个包名为 cn.com.a,另一个包名为cn.com.b.由于启动类只加了@SpringBootApplication注解,所 ...
- Mac如何用鼠标快速锁屏
锁屏谁不会啊?本来写这篇文章,感觉自己太多余,但用鼠标直接锁屏就有点小意思,Mac对于很多人来说非常模式,通常是商务.设计这类人事在使用,对于新手而言,它的功能过于隐藏,那么Mac要如何达到快速锁屏呢 ...
- 启动Apache出现错误Port 80 in use by "Unable to open process" with PID 4!
22:15:30 [Apache] Problem detected! 22:15:30 [Apache] Port 80 in use by "Unable to open proce ...
- freertos 启动任务调度器后卡在svc 0,汇编停在了0x0800014A E7FE B 0x0800014A
分别引导加载程序和应用程序(带有或不带有FreeRTOS)都可以正常工作. 引导加载程序和应用程序(无需FreeRTOS)可以完美运行. 但是,如果我在应用程序中使用freeRTOS并完成两项任务(显 ...