惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
D
Docker
腾讯CDC
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
博客园 - 三生石上(FineUI控件)
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
IT之家
IT之家
WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
博客园 - 【当耐特】

博客园 - 数迹

1.winform中App.config配置mssql连接字符串 where关键字 1.params 关键字 1.创建实体类UserInfo 1. UserInfo表的创建 3.SqlCommand组件 2.在DbHelper.cs 中使用连接字符串 事件委托1 委托总结:委托提供了 A类的对象 调用 B类对象的同一类方法 的能力。 委托3--委托声明比较 委托2 文心快码 委托1 sql提示注册表中无 \100\ConfigurationState的解决方法 - 数迹 - 博客园 安装SQL server 提示重新启动计算机失败怎么解决 DataGridView插入指定类型的列 菜单制作过程笔记1 ${pagecontext.request.contextpath}绝对路径理解 eclipse中修改JSP模板中的默认编码 hibernate的ddl-auto属性
多播委托
数迹 · 2026-02-11 · via 博客园 - 数迹

多播委托

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestConsoleFramwork
{
    class Player {

        public delegate void OnAttackDelegate(int JianShaoBloodNumber);
        public  OnAttackDelegate OnAttack=null;
        //点击按钮释放AOE攻击后,调用敌人的被伤害方法
        //AOE是一种攻击
        public void  DoAOE(int JianShaoBloodNumber) { 
            if (OnAttack!=null)
            {
                //攻击参数为10滴血
                OnAttack(JianShaoBloodNumber);
            }
        }
    }
    class Enemy {
        private int bloodNumber = 100;
        //减少血量的方法(减少的血量)
        public void JianShaoBlood(int JianShaoBloodNumber) { 

            bloodNumber-=JianShaoBloodNumber;
            Console.WriteLine("中招了,Enemy减血"+ JianShaoBloodNumber);
           Console.ReadLine();
        }
    }
    internal class DuoBoWeiTuo
    {
        static void Main(string[] args)
        {
            Enemy enemy0 = new Enemy();
            Enemy enemy1 = new Enemy();
            Enemy enemy2 = new Enemy();
            Player player = new Player();
            player.OnAttack += enemy0.JianShaoBlood;
            player.OnAttack += enemy1.JianShaoBlood;
            player.OnAttack += enemy2.JianShaoBlood;
            //DoAOE()执行对敌人减血10滴
            player.DoAOE(10);
        }
    }
}
//调用过程记录:
//1.玩家点击释放大招AOE攻击,后调用对应的玩家的DoAOE(减血数量)方法
//2.DoAOE()方法执行委托方法
//3.在此之前委托指针OnAttack()已经配置为敌人的减血方法
//4.这个例子中的回调就是敌人减血方法
//5.而委托方法本身起什么名字都可以

posted on 2026-02-11 17:14  数迹  阅读(8)  评论()    收藏  举报