首页 > 其他分享 >dotnet 委托delegate的使用 定义和使用

dotnet 委托delegate的使用 定义和使用

时间:2024-05-04 18:45:47浏览次数:19  
标签:委托 HellowDelegate delegate 使用 dotnet 方法 testDelegate 指针

void Main()
{
    // 委托 - 初级和高级的分水岭
    // 1. 委托的初体验
    // 委托是一个引用类型,其实是一个类型,保存方法的指针(地址) (变量名字都是地址 都是指针)
    // 是一个数据类型 实际是一个对象(委托对象,函数对象,列表对象) 万物都是对象 
    // 指针指向一个方法 当我们调用委托的时候这个方法就立即被执行
    // string int bool 可以是值类型  delegate object list 都是引用类型
    // 委托是和类一个级别的

    // 步骤
    // 1. 声明一个委托  testDelegate
    // 2. 声明要给方法  HellowDelegate
    // 3. 创建委托实列 就是把 1 和 2 建立关系(1和2的参数和返回值要一致)

    // 定义好委托 如何使用? new   叫做 创建委托实例
    // 委托把 变量 testDelegate 和 方法 HellowDelegate 建立关系,也就是指针和别名(变量)的关系
    // 此时 testDelegate 也是一个指向 方法 HellowDelegate 的指针。

    //testDelegate testDe = new testDelegate((a) => { }); // a 是参数
    testDelegate testDelegate = new testDelegate(HellowDelegate); // a 是参数
    testDelegate("我是一个委托调用");

    // 明明可以直接调用方法 HellowDelegate 为什么要使用委托这个中间商
    HellowDelegate("直接调用方法,为什么还要使用委托");

    // 为什么使用委托这个中间商,直接调用方法不行吗??
    // 在复杂业务上,把委托当作参数处理代码,把一部分代码独立出来(把需要公共的代码业务放到委托里面去实现,让代码更加简洁)。灵活使用。
    
    
    
    
}
// 定义一个委托 ps:和类同一个级别
delegate void testDelegate(string msg);  
// 定义一个方法 -- 当作委托的参数
// 必须是 static 形式的方法???
public static void HellowDelegate(string a)
{
    Console.WriteLine($"test{a}");
}

 

标签:委托,HellowDelegate,delegate,使用,dotnet,方法,testDelegate,指针
From: https://www.cnblogs.com/zhulongxu/p/18172550

相关文章

  • 在Docker内部使用gdb调试器报错-Operation not permitted
    在docker内部使用gdb调试时刻遇到了gdb如下报错信息:warning:Errordisablingaddressspacerandomization:Operationnotpermitted原因地址随机化是linux一项安全特性,它允许内核进程启动每次加载库的时候都在随机化的分布在进程虚拟内存地址空间上(早期固定的库要加载......
  • 在Linux中,如何使用logrotate命令管理日志文件?
    logrotate是一个在Linux系统中用来管理和维护日志文件的工具。它可以自动地对日志文件进行压缩、删除旧的日志文件、创建新的日志文件,以及在日志轮换时运行指定的脚本。以下是如何使用logrotate命令的一些基本步骤和配置方法:1.安装logrotate在大多数Linux发行版中,logro......
  • CMakeLists.txt --- install使用
    例:cmake_minimum_required(VERSION3.9)project(test)set(CMAKE_BUILD_TYPEDebug)add_library(hahatest.cpp)install(TARGEThahaDESTINATION/home/linxisuo/project/test)install(DIRECTORY${CMAKE_SOURCE_DIR}/testDESTINATION/home/linxisuo)说明:1.安装......
  • View Transitions API 使用
    ViewTransitionsAPI提供了一种机制,可以在更新DOM内容的同时,轻松地创建不同DOM状态之间的动画过渡,这是官方对他的描述,详情请看这里。下方创建好了<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="......
  • python - Counter简单使用
    统计元素数量,并返回字典,键为元素,值为个数fromcollectionsimportCounterlst=['a','b','c','d','a','b','a','c','c','c']dic=Counter(lst)print(dic)#Counter({'c......
  • 如何在本地使用授权或插件
    这里以PHPstudy为例,顺便附上phpstudy的安装教程:https://www.eyoucms.com/ask/list_1_10/5536.html。第一种情况:还没有域名的情况下,想要测试某个插件,先在官网下单,补全插件域名,这个域名尽量和其他域名区别开,比如用特别的后缀:eyouCMS.hk等等。如图所示:将源码上传后,在浏览器打开ey......
  • dotnet的Lambda表达式 委托泛型(2) Action Func
    //总结://泛型:把类,方法,属性,字段做到了通用化//反射:操作dll文件的一个帮助类库//特性:就是一个特殊的类自定义标记属性特性他就是AOP的另一种实现方式验证属性//委托:就是多播委托,可以保存一个或者多个方法的信息。可以用来传递方法(把方法当作参数传递)。主要用来实现代码的解......
  • excel - SUMIF的使用
    SUMIF(range,criteria,[sum_range])range是你要根据条件进行检查的单元格区域。criteria是根据其检查range的条件。这个条件可以是数字、表达式、或文本字符串。[sum_range]是可选的参数,当要求和的数字位于与range不同的区域时使用。如果省略sum_range,Excel会默认......
  • debugfs命令的使用方法
    使用debugfs命令需要root权限mount-tdebugfsnone/sys/kernel/debug#挂载命令,需要先挂载才能使用debugfs#命令行输入debugfs,回车open -w/dev/sda8#打开文件......
  • 【网络自动化运维】使用pythonping检查设备的连通性并记录可达设备(eNSP模拟器)
    实验拓扑:PC的IP地址和五台交换机的地址在同一网段,具体IP如图所示。现在保证直连网络能够通信,并且故意将SW5的接口shutdown掉,保证无法联通,作为对照的测试设备。在PC上运行python代码,测试与五台交换机的连通性。由于本次测试使用的是pythonping模块,这并不是python自带的模块,需要......