深入委托与多播委托的详解
时间:2023-05-29 07:07:15
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class 简单的委托实例
{
public static double Area(double Val)
{
return Val * 2;
}
public static double Scare(double Val)
{
return Val * Val;
}
}
class Test
{
public delegate double delegateTest(double dd);
static void Main()
{
//实例化了个委托数组,(一旦定义了委托类,就可以实例化它的实例)
delegateTest[] Operations =
{
//说明了委托的一种方式,把方法组合到数组
new delegateTest(简单的委托实例.Area),
new delegateTest(简单的委托实例.Scare)
};
for (int i = 0; i < Operations.Length; i++)
{
Console.WriteLine("Using Operations[{0}]", i);
Test MyTest = new Test();
//把委托传递给ProcessDelagate()这个方法,Operations[0]可以理解成delegateTest Operations =new delegateTest(简单的委托实例.Area);调用ProcessDelagate这个方法的时候Operations代理的方法是简单的委托实例.Area
MyTest.ProcessDelagate(Operations[i], 12.0);
MyTest.ProcessDelagate(Operations[i], 2.0);
Console.WriteLine();
}
}
//把委托作为一个参数传递到ProcessDelagate()第一个参数中
void ProcessDelagate(delegateTest Action, double d)
{
double Result = Action(d);
Console.WriteLine("提供的值是{0},结果是{1}", d, Result);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
//如果要多次调用这个方法,那么就要多次调用这个委托,委托包含多个方法,这个种委托就是多播委托!
class 多播委托
{
//用的是void没有返回值
public delegate void DelageteTest(double val);
static void Main()
{
//多播委托中添加2个方法
DelageteTest MyTest = new DelageteTest(Test.Area);
MyTest += new DelageteTest(Test.Scare);
//下面的代码跟上面的3行代码是等价的
//DelageteTest MyTest;
//DelageteTest Test1 = new DelageteTest(Test.Area);
//DelageteTest Test2 = new DelageteTest(Test.Scare);
//MyTest = Test1 + Test2;
多播委托 多 = new 多播委托();
多.OPreation(MyTest, 2.0);
多.OPreation(MyTest, 12.0);
}
void OPreation(DelageteTest Action, double d)
{
Action(d);
}
}
class Test
{
public static void Area(double Val)
{
Console.WriteLine(Val * 2);
}
public static void Scare(double Val)
{
Console.WriteLine(Val * Val);
}
}
}
标签:c#,委托,多播委托
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java 遍历Map的几种方法总结
2023-09-25 23:39:21
springBoot的事件机制GenericApplicationListener用法解析
2023-09-02 14:22:26
教你轻松制作java音乐播放器
2023-09-27 11:17:11
![](https://img.aspxhome.com/file/2023/0/91670_0s.jpg)
java15新功能的详细讲解
2023-08-23 04:40:21
Java 中的变量类型
2022-05-27 20:00:19
Android实现图片轮播效果
2022-01-24 02:33:13
![](https://img.aspxhome.com/file/2023/8/138588_0s.png)
Android打开GPS导航并获取位置信息返回null解决方案
2021-08-31 09:21:19
Android仿微信照片选择器实现预览查看图片
2022-02-03 12:25:51
![](https://img.aspxhome.com/file/2023/1/100621_0s.png)
java跟踪执行的sql语句示例分享
2022-07-30 20:13:18
Android发布项目到jitpack的完整步骤
2021-11-29 08:42:10
![](https://img.aspxhome.com/file/2023/5/139105_0s.jpg)
Android实现银行卡号扫描识别功能
2021-09-05 01:56:50
浅析Java的Hibernate框架中的缓存和延迟加载机制
2023-04-12 15:58:00
Android中使用开源框架eventbus3.0实现fragment之间的通信交互
2021-06-30 09:23:07
![](https://img.aspxhome.com/file/2023/6/125436_0s.gif)
java基础学习笔记之泛型
2022-05-31 01:49:44
基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览实例
2022-06-24 08:07:48
Java扩展库RxJava的基本结构与适用场景小结
2022-12-27 10:03:15
.net与javascript脚本的交互方法总结
2021-09-11 09:21:32
详解Mybatis通用Mapper介绍与使用
2023-11-29 08:49:08
java实现快速打字游戏
2022-11-05 11:16:38
Android ViewPager无限循环滑动并可自动滚动完整实例
2022-09-09 18:26:55