delegate(委托),Event(事件),Action,Func

delegate(委托)是函数的容器,会定义一个函数的模板。

public delegate void xxxx()

Event(事件)本质上也是Delegate,但是赋值的权限设置成了Private

public event xxxx delegate1()

Action是delegate的简写,是C#给我们封装好的一种写法

public Action xxxx()

Func既可以执行函数,也可以获得返回值,其括号内最后一个类型就是返回值

delegate例子:

public delegate void Help(int a);  // 委托(函数的容器)
public class testooo : Singleton<testooo>
{public Help p;  // 将委托实例化public void Hello(int a){Debug.Log(a);}
}
public class TestSendMsg : MonoBehaviour
{void Start(){Help p;p = testooo.Instance.Hello;p?.Invoke(1008666);}
}

Action其实就是C#把定义委托和将委托实例化封装成一句代码了,效果是一样的:

public class testooo : Singleton<testooo>
{public Action<int> p;  // 同时定义委托和将委托实例化public void Hello(int a){Debug.Log(a);}
}
public class TestSendMsg : MonoBehaviour
{void Start(){Action<int> p;p = testooo.Instance.Hello;p?.Invoke(1008666);}
}

event:

public delegate void Help(int a);  // 委托(函数的容器)
public class testooo : Singleton<testooo>
{public event Help p;  // 将委托实例化private void Start(){p = Hello;p?.Invoke(1);} public void Hello(int a){Debug.Log(a);}
}

在其它类中无法对testooo类的p进行赋值。

public class TestSendMsg : MonoBehaviour
{Help p;void Start(){testooo.Instance.p = eee;  // 这是会报错的}
}

Func:

public class testooo : Singleton<testooo>
{public Func<int, int> p;  // 将委托实例化public void Start(){p = Hello;Debug.Log("^^^^^^^^^^^^^^^^^^^^");}public int Hello(int a){return a * 10;}
}
public class TestSendMsg : MonoBehaviour
{void Start(){testooo.Instance.Start();//因为是不继承mono的单例所以要调用一下Debug.LogError(testooo.Instance.p(1));}
}

输出结果:

10

注意:继承mono的单例中的生命周期方法(Awake,Start,Update)都是走的unity的生命周期。但是如果单例没有继承mono,那么它的这些方法就不会被自动调用,没法走生命周期。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+Vue信息化在线教学平台的设计与实现(源码+部署说明+演示视频+源码介绍+lw)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

PSA制氧设备装置的使用注意事项解析

PSA制氧设备&#xff0c;即变压吸附制氧设备&#xff0c;是一种利用物理吸附原理&#xff0c;通过特定的吸附剂&#xff0c;在压力变化的情况下&#xff0c;从空气中分离出氧气的设备。由于其高效、节能、环保等特点&#xff0c;PSA制氧设备在工业、能源等领域得到了广泛应用。…

golang语言系列:Scrum、Kanban等敏捷管理策略

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 golang语言系列 文章&#xff0c;主要对编程通用技能 Scrum、Kanban等敏捷管理策略 进行学习 1.什么是敏捷开发 敏捷是一个描述软件开发方法的术语&#xff0c;它强调增量交付、团队协作、持续规划和持续学习。…

宝塔面板 -- 打包前端项目并部署提升访问速度

文章目录 前言一、打包前端项目二、添加PHP项目三、部署打包文件四、开通防火墙五、运行网站总结 前言 在前面写到的文章使用宝塔面板部署前端项目中&#xff0c;并没有将前端项目打包而是直接部署&#xff0c;导致网站访问速度非常慢&#xff0c;加载甚至要十几秒。因此&…

每天五分钟深度学习:神经网络和深度学习有什么样的关系?

本文重点 神经网络是一种模拟人脑神经元连接方式的计算模型&#xff0c;通过大量神经元之间的连接和权重调整&#xff0c;实现对输入数据的处理和分析。而深度学习则是神经网络的一种特殊形式&#xff0c;它通过构建深层次的神经网络结构&#xff0c;实现对复杂数据的深度学习…

校园公共广播网络音频解码终端SV-7102

SV-7102T网络播放解码器 一、描述18123651365微信 SV-7102T是一款壁挂式网络播放终端&#xff0c;具有10/100M以太网接口&#xff0c;配置一路本地扩音线路输入和一路线路输出&#xff0c;可将内部音源输出到外接功放&#xff0c;还提供两路立体声15W的功率输出&#xff0c;可…

ios 之 netty版本swiftNio(socket创建)

SwiftNio 简介 用于高性能协议服务器和客户端的事件驱动、无阻塞的网络应用程序框架。 SwiftNIO是一个跨平台异步事件驱动的网络应用程序框架&#xff0c;用于快速开发可维护的高性能协议服务器和客户端。 这就像Netty&#xff0c;但是为Swift写的。 Xcode引入swiftNio 在实…

【LeetCode热题100】46. 全排列(回溯)

一.题目要求 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 二.题目难度 中等 三.输入样例 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,…

C++ //练习 11.2 分别给出最适合使用list、vector、deque、map以及set的例子。

C Primer&#xff08;第5版&#xff09; 练习 11.2 练习 11.2 分别给出最适合使用list、vector、deque、map以及set的例子。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 解释 list的元素是有序的&#xff0c;可以重复的&#xff0…

如何生成一个指定长度的空数组?

简便写法&#xff1a;使用constructor构造函数进行创建&#xff0c;第一个空数组 [ ] 表示创建一个空数组&#xff0c;然后调用 constructor 属性并传入参数指定数组长度。 [].constructor(17)可用于遍历&#xff0c;例如使用ngFor进行单纯的遍历&#xff0c;参数为遍历次数。

电商API分享:如何批量获取商品详情页数据(属性图价格sku视频评论)

电商API&#xff08;应用程序接口&#xff09;通常提供了丰富的数据获取功能&#xff0c;使开发者能够方便地获取商品详情页的各种数据&#xff0c;包括商品属性、图片、价格、SKU&#xff08;库存量单位&#xff09;、视频以及评论等。以下是一个基本的步骤指南&#xff0c;用…

SSM框架学习——SqlSession以及Spring与MyBatis整合

SqlSession以及Spring与MyBatis整合 准备所需要的JAR包 要实现MyBatis与Spring的整合&#xff0c;很明显需要这两个框架的JAR包&#xff0c;但是只是使用这两个框架中所提供的JAR包是不够的&#xff0c;还需要配合其他包使用&#xff1a; Spring的JAR包MyBatis的JAR包Spring…

【信贷后台管理系统之axios的二次封装(四)】

文章目录 一、axios的二次封装二、配置后端接口地址三、登录接口api联调四、贷款申请接口api编写联调 一、axios的二次封装 示例&#xff1a;pandas 是基于NumPy 的一种工具&#xff0c;该工具是为了解决数据分析任务而创建的。 src下新建utils,新建request.js用来封装axios 控…

VS2022+QT5.9 提示找不到qtmain.lib

从VS2013QT的项目切换到VS2022QT5.9&#xff0c;安装好mscv2017版本的QT5.9&#xff0c;项目工程选择QT project settings中的Qt Installation为mscv2017版本的QT5.9&#xff0c;编译好提示找不到qtmain.lib 解决思路&#xff1a; 提示找到xxxx.lib&#xff0c;第一库目录不对…

中科驭数超低时延网络解决方案入选2023年度金融信创优秀解决方案

近日&#xff0c;由中国人民银行领导、中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布「2023年度第三期金融信创优秀解决方案」&#xff0c;中科驭数超低时延网络解决方案从众多方案中脱颖而出&#xff0c;成功入选&#xff0c;代表了该方案的技术创新和金融实践…

共享社会经济路径(SSP1-5)中国及分省人口预估数据库_v2

v1数据集&#xff1a; 在共享社会经济路径&#xff08;SSPs&#xff09;全球框架下&#xff0c;根据本地化人口和经济参数&#xff0c;采用人口-发展-环境&#xff08;PDE&#xff09;模型&#xff0c;构建2020-2100年SSPs人口格点数据&#xff1b;采用柯布-道格拉斯&#xff…

网络钓鱼升级 Darcula如何窃取用户信息

近日&#xff0c;网络安全领域一种名为 “Darcula” 的网络钓鱼欺诈&#xff08;PhaaS&#xff09;悄然兴起。这种新型钓鱼方式不同于传统的手段&#xff0c;它巧妙地利用了谷歌信息和 iMessage 的富通信服务&#xff08;RCS&#xff09;&#xff0c;成为了网络犯罪分子的新手段…

基于springboot实现学生读书笔记共享平台系统项目【项目源码+论文说明】

基于springboot实现学生读书笔记共享平台系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个读书笔记共享平台 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者…

Linux——软件管理

目录 Linux应用程序基础 应用程序与系统命令的关系 典型应用程序的目录结构 常见的软件包封装类型 RPM包管理机制 使用YUM源 使用YUM源管理软件的步骤 1、配置YUM源配置文件 2、清空YUM源缓存 yum clean all 3、安装软件 yum install httpd 基本 …

C 练习实例96 - 字符串中的子串

题目&#xff1a;计算字符串中出现字串的次数 例如&#xff1a;789123456123121230中有3个“123”字符串字串 代码&#xff1a; #include <stdio.h> #include <string.h> int func(char *str1, char *str2) {int count 0;int i,j;for( i 0; i < strlen(str…