萌新关于C#委托一点见解
开博第一写C#委托(一个简单的委托)
1.关于委托,一直是学习c#的萌新们的噩梦,小生也是。最近在学委托感觉瞬间被虐成狗,但作为C#中极为重要的一个内容,学好了将会及大地减少我们的代码量,而且这也是够装X炫技的一项内容(反正大神写的委托灵狐也是看不怎么懂),由于小生也是最近接触到了,这里先做一些简单的分享。
2.1委托的关键字delegate,下面尝试先定义一个委托(本文先从较简单的delegate委托开始说,匿名委托灵狐还没看懂[想哭])
public delegate void ReaduceEventHandler(float damage);
这样一个委托就定义好,关于委托,我是把它作为一个类来进行理解的,可以认为这是一个参数为float且返回值为void的方法的类,先这样定义好接下来要用。
2.2接下来在一个类中来用这个委托比如一个玩家类Player,这里绛舌有一个战斗的场景
class Player{
//第二步定义一个委托变量(2.1中的那个)
public static ReaduceEventHandler ReduceHander;
float playerHp;
public float PlayerHp{
set{
playerHp=value;
}
get{
return playerHp;
}
}
public void Attack(float damage){
Console.writeLine("攻击");
//第四步,调用委托,注意这里是第四步,在这之前还会有一个第三步,叫委托的绑定(也叫
//注册方法)因为委托可以理解为一个方法的类那么我们定义的委托,就可以看作是一类参数为
//float且返回值为void的方法
ReduceHander(damage);//且当执行攻击的方法时,就会执行委托已经注册过的方法
}
}
2.3战斗场景的话敌人是得有的这里我们定义一个敌人
class Enemy{
public float HP;\\为了方便,省去封装
public void ReduceHp(float damage){
Console.WriteLine("掉血了");
}
public Enemy(){
//这里是第三步,注册方法,第二步中我们定义的委托相当于是一个方法类的对象,这里的+=
//相当于在为委托进行赋值。(这个算是个人理解了)
Player.ReduceHander+=ReduceHp;
}
}
3.1在Main中调用一下
public static void Main(string[]args){
Player player=new Player();
Enemy em=new Enemy();
player.Attack(20)//
}
注:新人初写,还在学习,请大家多提意见!另外请大佬告知怎么学好匿名委托【发愁中】
萌新关于C#委托一点见解的更多相关文章
- 关于新学期Python的一点见解
首先很高兴选到了Python,之前学习过c语言,不过学的不大好. 我希望此次课程能够教会我们如何运用Python解决生活中的一些小问题,或者可以解决其他学科上的一些问题,当然有关人工智能方面的最好. ...
- 萌新的IDEA_web开发笔记(未完)
萌新IDEA_web开发笔记 按兴趣自己搞的网页: http://47.94.140.98:8080/ow_web/my_web/web/ 暂时还没做完. 部署在租的服务器上面,背景视频加载可能有点慢 ...
- 萌新web前端从零开始(1)——计算机入门
前言:这是一个萌新从零开始的学习之路,与大家分享自己的看法与见解,还请指出错误与遗漏点方便改正. 1.认识计算机. 计算机语言常见的有C,PHP,Ruby,Java,C#,Basic,JS,C++等, ...
- Vue初识:一个前端萌新的总结
一.前言 时隔三年,记得第一次写博客还是2015年了,经过这几年的洗礼,我也从一个后端的小萌新变成现在略懂一点点知识的文青.如今对于前端的东东也算有一知半解,个人能力总的来说,也能够独立开发产品级项目 ...
- 留学萌新Essay写作须知
Essay是留学生们接触比较多的一项留学生作业,但尽管如此,依旧有部分同学对于essay写作是没有足够的把握的.随着开学季的到来,很多萌新初次接触Essay写作,难免会有很多不懂得地方.所以今天小编就 ...
- 萌新带你开车上p站(二)
本文作者:萌新 前情提要:萌新带你开车上p站(一) 0x04flag 看题目描述似乎是一个和脱壳相关的逆向题目 按照给出的地址先下载过来 file看看 是个可执行文件 执行之 emm什么都看不出来, ...
- 萌新带你开车上p站(Ⅳ)
本文作者:萌新 前情回顾: 萌新带你开车上p站(一) 萌新带你开车上p站(二) 萌新带你开车上P站(三) 回顾一下前篇,我们开始新的内容吧 0x12 登录后看源码 通读程序,逻辑是这样子的: 输入6个 ...
- 萌新带你开车上p站(三)
本文作者:萌新 前情回顾: 萌新带你开车上p站(一) 萌新带你开车上p站(二) 0x08 题目给的提示是和运算符优先级有关 登录后直接看源码 mistake@pwnable:~$ ls flag mi ...
- 手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02
在上一篇文章中,我介绍了自己的SpringBoot Starter项目,可以让我们使用注解的方式轻松地获取操作日志,并推送到指定数据源. 之前,我的项目开源在Github上,大家想要用我的项目,还得把 ...
随机推荐
- 使用org.apache.commons.logging打日志注意事项
使用方法:例如,protected final Log logger = LogFactory.getLog(getClass());if (logger.isDebugEnabled()) { lo ...
- eclipse快捷键及设置
1.Eclipse设置新建菜单初始项 windows-->Perspective-->Customize Perspective--> 2.Eclipse快捷键 1. ctrl+sh ...
- NLP+词法系列(一)︱中文分词技术小结、几大分词引擎的介绍与比较
笔者想说:觉得英文与中文分词有很大的区别,毕竟中文的表达方式跟英语有很大区别,而且语言组合形式丰富,如果把国外的内容强行搬过来用,不一样是最好的.所以这边看到有几家大牛都在中文分词以及NLP上越走越远 ...
- 实战DeviceIoControl 之四:获取硬盘的详细信息
Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有 ...
- CSS注释
CSS注释 1./*注释内容*/ /*-moz-background-origin:border; -webkit-background-origin:border; -moz-background- ...
- WINDOWS的错误代码对应的故障
WINDOWS的错误代码对应的故障 0000 操作已成功完成. 0001 错误的函数. 0002 系统找不到指定的文件. 0003 系统找不到指定的路径. 0004 系统无法打开文件. 0005 拒绝 ...
- gstreamer在Ubuntu下构建开发环境
1,Ubuntu已经安装了gstreamer库,因此只需要再安装几个开发库即可,是 libstreamer0.-libstreamer0.-devlibstreamer0.--dbg 在新立得里选中应 ...
- DOS批处理命令递归删除给定的文件(夹),兼VC工程清理小工具
使用dos批处理命令递归删除指定的文件(夹): (下面内容针对清理VC工程!自己按说明任意修改) 2014-06-10修改:删除前增加了[y,n]询问: echo off rem 递归删除当前文件下指 ...
- Struts 有哪些常用标签库
Struts 有哪些常用标签库 1.html标签库 2.bean标签库 3.logic标签库
- 手机端仿ios的1-n级联动脚本二
一,图片 二,代码 2.1,html脚本 var weekdayArr=['周日','周一','周二','周三','周四','周五','周六'];var timeArr = ['08:30','09: ...