C# 委托的一些使用上的小技巧
时间:2022-04-24
本文章向大家介绍C# 委托的一些使用上的小技巧,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、委托是一种数据类型,我们可以在任何定义类的地方定义委托,在任何声明类的地方声明委托
2、初始化委托有两种方式,代码如下:
(1)、像类一样初始化委托
public delegate void SayHelloEventHandler(string _name);
SayHelloEventHander sh = new SayHelloEventHander(ChineseSayHello);//创建了一个SayHelloEventHandler的实例,并给SayHelloEventHandler构造函数赋了初值ChineseSayHello
private static void ChineseSayHello(string name)
{
}
(2)、赋初值
public delegate void SayHelloEventHandler(string _name);
SayHelloEventHander handler;
handler=new Program().ChineseSayHello;//通过赋初值的方式
private void ChineseSayHello(string name)
{
}
3、第一次初始化委托时,不能使用+=或者-=操作,只能使用2中提供的2中初始化委托的方式,否则编译其会报错。
4、初始化化完委托之后,委托可以使用+=或者-=操作,因为一个委托可以绑定多个方法,具体是多少,每测过,你可以写个循环测下,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Delegate
{
class Program
{
public delegate void SayHelloEventHandler(string name);
static void Main(string[] args) {
Program p = new Program();
string n="张三";
SayHelloEventHandler handler;
handler = p.SayChHi;
handler += p.SayChHi;
handler += p.SayChHi;
handler += p.SayChHi;
handler += p.SayChHi;
handler += p.SayChHi;
handler += p.SayChHi;
handler += p.SayChHi;
p.SayHi(n, handler);
}
public void SayHi(string name,SayHelloEventHandler handler) {
handler(name);
}
public void SayChHi(string name) {
Console.WriteLine("你好 " + name);
Console.ReadKey();
}
public void SayEnglishHi(string name) {
Console.WriteLine("Hello " + name);
Console.ReadKey();
}
}
}
绑定多次的结果就是执行多次绑定的方法,当前委托绑定了8个相同的方法,所以执行了8次同一个方法.
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Windows10中VS2017环境下使用libmodbus库Modbus TCP读取设备的数据
- 记一次生产服务器进程突然消失问题排查!
- 0812-7.1.3-如何使用Ranger给HBase授权
- Redis集群方案对比:Codis、Twemproxy、Redis Cluster
- 这就是你日日夜夜想要的docker!!!---------Docker镜像制作与私有仓库建立
- 排障集锦:九九八十一难之第十八难!-----System has not been booted with systemd as init system (PID 1). Can‘t operat
- 深入了解 Flex 属性
- 如何设计一个安全的短信接口?
- ERROR Shell:396 - Failed to locate the winutils binary in the hadoop binary path java.io.IOE...
- Windows 安装配置 PySpark 开发环境(详细步骤+原理分析)
- 安利三个关于Python字符串格式化进阶知识
- TCP/IP学习笔记1——协议分层
- 用Python爬取淘宝4403条大裤衩数据进行分析,终于找到可以入手的那一条
- Python 微信机器人:属于自己的微信机器人制作,简单易懂。图灵机器人接口api调用。
- 最全总结:把模块当做脚本来执行的 7 种案例及其原理