当前位置: 首页 > news >正文

用《斗破苍穹》的视角打开C#委托2 委托链 / 泛型委托 / GetInvocationList

委托链

  • 经过不懈地努力,我终于成为了斗师,并成功掌握了两种斗技——八极崩和焰分噬浪尺。
  • 于是,我琢磨着,能不能搞一套连招,直接把对方带走。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace FrameworkDemo
{class Program{delegate void 攻击委托类型(string a);static void 八极崩(string a) {Console.WriteLine("八极崩");}static void 焰分噬浪尺(string a){Console.WriteLine("焰分噬浪尺");}static void Main(string[] args){// 创建委托链攻击委托类型 一套连招 = new 攻击委托类型(八极崩);// 攻击委托类型 一套连招 = 八极崩;   // 也可以这样写一套连招 += 焰分噬浪尺;// 启动委托一套连招("吃我一记连招");Console.ReadLine();}}
}

请添加图片描述

委托链返回值(GetInvocationList)

  • 这连招确实是打出来了,但是我怎么知道我打出了多少伤害呢?所以我要想办法接受这套输出的反馈。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace FrameworkDemo
{class Program{delegate int 攻击委托类型(string a);static int 八极崩(string a) {Console.WriteLine("八极崩");return 330;}static int 焰分噬浪尺(string a){Console.WriteLine("焰分噬浪尺");return 660;}static void Main(string[] args){// 创建委托攻击委托类型 一套连招 = 八极崩;一套连招 += 焰分噬浪尺;// 获取委托链Delegate[] delList = 一套连招.GetInvocationList();// 遍历委托链for (int i = 0; i < delList.Length; i++) {攻击委托类型 del = (攻击委托类型)delList[i];// 一次调用委托并获取返回值int result = del("吃我一套连招");Console.WriteLine($"攻击伤害:{result}");}Console.ReadLine();}}
}

请添加图片描述

泛型委托

  • 这时候,问题就来了,我每创建一个委托,岂不是都要先定义一个委托类型,然后再创建一个委托实例,假设这个委托类型只用一次,那我岂不是要在我的类里面定义一大堆的委托?
  • 于是乎,就出现了一系列的泛型委托。
  • Action是不带有返回值的泛型,而Func具有返回值。
using System;namespace FrameworkDemo
{class Program{static void 八极崩() {Console.WriteLine("八极崩");}static void 焰分噬浪尺(string a){Console.WriteLine("焰分噬浪尺");}static string 佛怒火莲(string a) {Console.WriteLine("佛怒火莲");return "成功击杀敌军!";}static void Main(string[] args){// 不带返回值的委托Action 攻击委托1 = 八极崩;攻击委托1();Action<string> 攻击委托2 = 焰分噬浪尺;攻击委托2("吃我一击!");// 带返回值的委托// <>中的最后一个参数是函数的返回值类型Func<string, string> 攻击委托3 = 佛怒火莲;string result = 攻击委托3("绝杀");Console.ReadLine();}}
}

相关文章:

用《斗破苍穹》的视角打开C#委托2 委托链 / 泛型委托 / GetInvocationList

委托链 经过不懈地努力&#xff0c;我终于成为了斗师&#xff0c;并成功掌握了两种斗技——八极崩和焰分噬浪尺。于是&#xff0c;我琢磨着&#xff0c;能不能搞一套连招&#xff0c;直接把对方带走。 using System; using System.Collections.Generic; using System.Linq; u…...

唐老师讲电赛

dc-dc电源布局要点...

[ICCV-23] DeformToon3D: Deformable Neural Radiance Fields for 3D Toonification

pdf | code 将3D人脸风格化问题拆分为几何风格化与纹理风格化。提出StyleField&#xff0c;学习以风格/ID为控制信号的几何形变残差&#xff0c;实现几何风格化。通过对超分网络引入AdaIN&#xff0c;实现纹理风格化。由于没有修改3D GAN空间&#xff0c;因此可以便捷实现Edit…...

配置Hive使用Spark执行引擎

配置Hive使用Spark执行引擎 Hive引擎概述兼容问题安装SparkSpark配置Hive配置HDFS上传Spark的jar包执行测试速度对比 Hive引擎 概述 在Hive中&#xff0c;可以通过配置来指定使用不同的执行引擎。Hive执行引擎包括&#xff1a;默认MR、tez、spark MapReduce引擎&#xff1a; 早…...

基于FPGA的视频接口之千兆网口(五应用)

简介 相信网络上对于FPGA驱动网口的开发板、博客、论坛数不胜数,为何博主需要重新手敲一遍呢,而不是做一个文抄君呢!因为目前博主感觉网络上描述的多为应用层上的开发,非从底层开始说明,本博主的思虑还是按照老规矩,按照硬件、底层、应用等关系,使用三~四篇文章,来详细…...

车载开发所学内容,有哪些?程序员的转岗位需求

一、高速发展的行业前景 随着全球智能汽车市场的飞速发展&#xff0c;车载开发行业的前景可谓一片光明。各国政府对于自动驾驶和智能交通系统的政策支持&#xff0c;为行业带来了前所未有的机遇。此外&#xff0c;人工智能、大数据、云计算等前沿技术的不断突破&#xff0c;为…...

VSCode Intellij IDEA CE 数据库连接

VSCode & Intellij IDEA CE 数据库连接 大概记一下现在正在用的几个工具/插件 VSCode VSCode 里面的工具我下载了很多&#xff0c;如果只是链接 MySQL 的话&#xff0c;可能用 Jun Han 这位大佬的 MySQL 就好了&#xff1a; 使用这个插件直接打开 .sql 文件单击运行就能…...

直流无刷电机开发应用

下面的链接是笔者在研究无刷电机的过程中&#xff0c;找到的业内无刷电机驱动龙头企业&#xff0c;峰岹科技的各类无刷电机应用设计参考&#xff0c;比较有学习和借鉴意义。 应用手册 - 峰岹科技...

c 语言基础题目:PTA L1-030 一帮一

“一帮一学习小组”是中小学中常见的学习组织方式&#xff0c;老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作&#xff0c;即在得到全班学生的排名后&#xff0c;在当前尚未分组的学生中&#xff0c;将名次最靠前的学…...

网工内推 | base郑州,上市公司,最高15薪,五险一金全额缴

01 四方达 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责公司数据中心&#xff08;机房&#xff09;的管理与运维工作。 2、负责公司服务器、路由器、防火墙、交换机等设备的管理、以及网络平台的运行监控和维护&#xff1b; 3、负责公司服务器运维管理工作、…...

求后缀表达式的值

后缀表达式的值 【题目描述】 从键盘读入一个后缀表达式&#xff08;字符串&#xff09;&#xff0c;只含有0-9组成的运算数及加&#xff08;&#xff09;、减&#xff08;—&#xff09;、乘&#xff08;*&#xff09;、除&#xff08;/&#xff09;四种运算符。每个运算数之间…...

【FISCO-BCOS】十七、角色的权限控制

目录 一、角色定义 二、账户权限控制 1.委员新增、撤销与查询 2.委员权重修改 3.委员投票生效阈值修改 4. 运维新增、撤销与查询 一、角色定义 分为治理方、运维方、监管方和业务方。考虑到权责分离&#xff0c;治理方、运维方和开发方权责分离&#xff0c;角色互斥。 治理…...

vue怎样封装接口

Vue可以使用axios来发送HTTP请求&#xff0c;通过封装axios可以实现接口的统一管理和调用。下面是一个简单的封装接口的示例。 安装axios 在项目中安装axios依赖&#xff0c;可以使用npm或者yarn命令进行安装。 npm install axios --save创建api.js文件 在项目中创建一个ap…...

Typescript 笔记:函数

1 函数定义 function function_name() {// 执行代码 }2 函数返回值 function function_name():return_type { // 语句return value; } return_type 是返回值的类型。 return 关键词后跟着要返回的结果。 返回值的类型需要与函数定义的返回类型(return_type)一致。 3 函数…...

Axios 封装

请注意以下文件夹: utils下的setToken.js 是token封装(封装 Token-CSDN博客),service.js 是axios封装。 Axios封装: 1.安装axios 在项目终端下 输入: npm install axios --save 2.在main.js全局引入axios import axios from axiosVue.prototype.$axios =axios //挂…...

CocosCreator 面试题(一)Javascript的垃圾回收机制

JavaScript的垃圾回收机制是一种自动管理内存的机制&#xff0c;它负责检测和回收不再使用的内存&#xff0c;以便释放资源并提高性能。 标记清除&#xff08;Mark and Sweep&#xff09;&#xff1a;这是JavaScript最常用的垃圾回收算法。它的工作原理是通过标记活动对象&…...

【计算机网络】UDP协议编写群聊天室----附代码

UDP构建服务器 x 预备知识 认识UDP协议 此处我们也是对UDP(User Datagram Protocol 用户数据报协议)有一个直观的认识; 后面再详细讨论. 传输层协议无连接不可靠传输面向数据报 网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的…...

Java架构师高并发架构设计

目录 1 导学2 什么是高并发问题3 高并发处理之道4 akf扩展立方体5 细化理念应对高并发5 总结1 导学 本章的主要内容是大型系统架构设计的难点之一,高并发架构设计相关的知识落到实际项目上,就是订单系统的高并发架构设计。我们首先会去学习到底何为高并发问题,先把问题搞清楚…...

【客观赋权法1】熵权法(MATLAB全代码)

熵权法(entropy weight method, EWM) 1 原理2 MATLAB代码3 案例参考赋权法(Weighting Method) 是一种常用的数据处理方法,它可以将不同变量之间的重要性进行区分,并赋予它们不同的权重,以反映它们对整体的贡献程度。 指标在评估体系中的重要程度可以用 指标权重系数表示…...

“注释: 爱恨交织的双重标准?解析注释在代码开发中的作用。”

文章目录 每日一句正能量前言观点和故事程序员不写注释的原因是什么如何才能写出漂亮的注释后记 每日一句正能量 水与水之间有距离&#xff0c;但地心下直相牵&#xff0c;人与人之间有距离&#xff0c;但心里时刻挂念&#xff0c;发条短信道声晚安&#xff0c;梦里我们相见。 …...

石榴石固态电解质表面再生技术:从污染层去除到界面稳定性优化

1. 项目概述&#xff1a;从“失效”到“再生”的固态电解质界面在固态电池的研发赛道上&#xff0c;石榴石型固态电解质&#xff08;如Li7La3Zr2O12&#xff0c;简称LLZO&#xff09;因其高离子电导率、宽电化学窗口和对锂金属良好的化学稳定性&#xff0c;被视为实现高能量密度…...

【数字孪生实战案例】三维场景中怎样点击飞线,唤起弹窗并加载匹配的关联数据?~山海鲸可视化

在三维数据可视化场景中&#xff0c;飞线常用于呈现跨区域业务关联与流转关系。为增强交互体验与数据可读性&#xff0c;需实现点击飞线触发弹窗&#xff0c;并精准加载匹配的关联数据&#xff0c;让用户可实时查看单条飞线对应的业务信息&#xff0c;提升三维场景的数据交互与…...

RK3506开发板PWM输入捕获配置与调试实战指南

1. 项目概述&#xff1a;在RK3506上搞定PWM输入捕获最近在做一个工业网关项目&#xff0c;需要精确测量外部传感器发来的PWM信号频率和占空比&#xff0c;核心板选型正好落在了触觉智能的RK3506开发板上。这块板子接口丰富&#xff0c;性能也够用&#xff0c;但上手调试PWM输入…...

基于MCP协议与RAG技术构建智能聊天应用:架构解析与实战指南

1. 项目概述&#xff1a;一个基于MCP协议的RAG聊天应用最近在开源社区里&#xff0c;一个名为gogabrielordonez/mcp-ragchat的项目引起了我的注意。乍一看标题&#xff0c;它融合了当下两个非常热门的技术概念&#xff1a;MCP和RAG。对于从事AI应用开发&#xff0c;特别是希望构…...

大语言模型本地化部署利器:Synaptic-Link 模型文件管理工具详解

1. 项目概述与核心价值最近在折腾一些AI相关的本地化部署和模型管理&#xff0c;发现一个挺有意思的项目&#xff0c;叫dlxeva/synaptic-link。乍一看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;“突触链接”&#xff1f;听起来像是神经科学或者生物信息学的东西。但如…...

当深度学习赋能异步电机矢量控制:从模型优化到性能跃迁

1. 异步电机矢量控制的传统挑战 我第一次接触异步电机矢量控制是在2015年做工业机器人项目时。当时为了调试一个简单的速度环&#xff0c;整整花了两周时间反复调整PI参数。这种经历让我深刻体会到传统控制方法的局限性——就像用螺丝刀修理精密手表&#xff0c;虽然最终能调好…...

你的PNG文件为什么总是太大?让SuperPNG插件帮你解决这个痛点

你的PNG文件为什么总是太大&#xff1f;让SuperPNG插件帮你解决这个痛点 【免费下载链接】SuperPNG SuperPNG plug-in for Photoshop 项目地址: https://gitcode.com/gh_mirrors/su/SuperPNG 如果你经常使用Photoshop处理PNG图片&#xff0c;可能已经发现了一个令人头疼…...

AI代码助手Cursor与Django全栈开发:十倍速构建Web应用实战

1. 项目概述&#xff1a;当AI代码助手遇上Django全栈开发如果你是一名独立开发者、初创团队的技术负责人&#xff0c;或者正在学习全栈开发&#xff0c;那么你一定对如何高效构建一个现代化的Web应用感到头疼。从环境配置、数据库设计、API接口开发到前端页面渲染&#xff0c;每…...

PIM-LLM:1-bit量化大语言模型的混合内存计算架构

1. 项目概述PIM-LLM是一种创新的混合内存计算架构&#xff0c;专门为1-bit量化的大语言模型&#xff08;LLM&#xff09;设计。这个架构通过结合模拟内存计算&#xff08;PIM&#xff09;和数字脉动阵列&#xff0c;实现了对低精度和高精度矩阵乘法运算的高效加速。在边缘AI加速…...

嵌入式GUI设计:资源受限下的高效人机交互实践

1. 嵌入式GUI设计的核心挑战与价值定位在咖啡机、车载仪表、医疗设备等嵌入式系统中&#xff0c;图形用户界面(GUI)承担着人机交互的关键桥梁作用。与桌面端或移动端GUI不同&#xff0c;嵌入式GUI面临三大独特约束&#xff1a;首先&#xff0c;硬件资源极度受限——典型嵌入式处…...