开博第一写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#委托一点见解的更多相关文章

  1. 关于新学期Python的一点见解

    首先很高兴选到了Python,之前学习过c语言,不过学的不大好. 我希望此次课程能够教会我们如何运用Python解决生活中的一些小问题,或者可以解决其他学科上的一些问题,当然有关人工智能方面的最好. ...

  2. 萌新的IDEA_web开发笔记(未完)

    萌新IDEA_web开发笔记 按兴趣自己搞的网页: http://47.94.140.98:8080/ow_web/my_web/web/ 暂时还没做完. 部署在租的服务器上面,背景视频加载可能有点慢 ...

  3. 萌新web前端从零开始(1)——计算机入门

    前言:这是一个萌新从零开始的学习之路,与大家分享自己的看法与见解,还请指出错误与遗漏点方便改正. 1.认识计算机. 计算机语言常见的有C,PHP,Ruby,Java,C#,Basic,JS,C++等, ...

  4. Vue初识:一个前端萌新的总结

    一.前言 时隔三年,记得第一次写博客还是2015年了,经过这几年的洗礼,我也从一个后端的小萌新变成现在略懂一点点知识的文青.如今对于前端的东东也算有一知半解,个人能力总的来说,也能够独立开发产品级项目 ...

  5. 留学萌新Essay写作须知

    Essay是留学生们接触比较多的一项留学生作业,但尽管如此,依旧有部分同学对于essay写作是没有足够的把握的.随着开学季的到来,很多萌新初次接触Essay写作,难免会有很多不懂得地方.所以今天小编就 ...

  6. 萌新带你开车上p站(二)

    本文作者:萌新 前情提要:萌新带你开车上p站(一) 0x04flag  看题目描述似乎是一个和脱壳相关的逆向题目 按照给出的地址先下载过来 file看看 是个可执行文件 执行之 emm什么都看不出来, ...

  7. 萌新带你开车上p站(Ⅳ)

    本文作者:萌新 前情回顾: 萌新带你开车上p站(一) 萌新带你开车上p站(二) 萌新带你开车上P站(三) 回顾一下前篇,我们开始新的内容吧 0x12 登录后看源码 通读程序,逻辑是这样子的: 输入6个 ...

  8. 萌新带你开车上p站(三)

    本文作者:萌新 前情回顾: 萌新带你开车上p站(一) 萌新带你开车上p站(二) 0x08 题目给的提示是和运算符优先级有关 登录后直接看源码 mistake@pwnable:~$ ls flag mi ...

  9. 手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02

    在上一篇文章中,我介绍了自己的SpringBoot Starter项目,可以让我们使用注解的方式轻松地获取操作日志,并推送到指定数据源. 之前,我的项目开源在Github上,大家想要用我的项目,还得把 ...

随机推荐

  1. SCU 4438 Censor KMP/Hash

    题意:给定一个模式串和文本,要求删除所有模式串.可能删除后会形成新的模式串,必须全部删除. 思路1:kmp算法求得失配数组,用一个match数组记录文本串中第i字符和未删除的字符能匹配模式串的长度.这 ...

  2. 【重磅】PRO基础版免费,是时候和ExtJS说再见了!

    三石的新年礼物 9 年了,FineUI(开源版)终于迎来了她的继任者 - FineUIPro(基础版),并且完全免费!   FineUIPro(基础版)作为三石奉献给社区的一个礼物,绝对让你心动: 拥 ...

  3. Kettle参数化配置

    Kettle参数化配置 在做系统化的Kettle实现方案,我们基本要定义一些不变的参数,在整个生命周期中使用,或者设置一些特定的参数,在一些特定的JOB中使用.参数化配置有利用我们Kettle实现规范 ...

  4. freemarker获取封装类中对象的属性

    freemarker获取封装类中对象的属性 1.设计思路 (1)封装学生类 (2)创建数据模型 (3)新建student.ftl (4)运行Junit测试文件,生成HTML文件 2.封装学生类 Stu ...

  5. MySQL日期类型和毫秒值相互转换

    有时需要将日期类型值转换成毫秒值,有时也要将毫秒值转换成日期,为了更方便,满足查询的需要. 现在,新建一张数据库表t_stu_info,并向表里插入数据 use test; show tables; ...

  6. C#中的匿名函数使用,类名<T>

    C#中有个叫做"泛型"的集合,就是说只是个外壳,到底是int,string,bool还是什么类型,都可以按照自己的要求进行定义集合,所以我们用个"T"表示. 请 ...

  7. TypeError:_12.store.query is not a function

    1.错误描述 TypeError:_12.store.query is not a function                              _SearchMixin.js(第62行 ...

  8. JDBC连接池-自定义连接池

    JDBC连接池 java JDBC连接中用到Connection   在每次对数据进行增删查改 都要 开启  .关闭  ,在实例开发项目中 ,浪费了很大的资源 ,以下是之前连接JDBC的案例 pack ...

  9. 各种HTML锚点跳转方式

    1 js控制锚点跳转 <a name="anchor"></a> location.hash="anchor"; 不只有a其他元素也可以 ...

  10. CF368 D - Persistent Bookcase

    re了20多发 还是我在测试数据上操作最后了10多发才发现的 其实只需要多加一句就好了 真的愚蠢啊,要不都能进前100了 #include<bits/stdc++.h> using nam ...