C# delegate委托的用法

一.前言

  delegate的意思就是委托。简单来说,在C#中delegate就是一个用来引用方法的类型,创建了委托后,在委托里添加方法的指向,就可以用委托来调用添加到委托里的方法。

 二.用法

1.一般委托

//定义委托类型
public delegate string Attack(int point);
public class Demo
{
    public string Fire(int point)
    {
        return "火属性伤害:" + point + "点\n";
    }
    public string Ice(int point)
    {
        return "冰属性伤害:" + point + "点\n";
    }
}

public class Program
{
    //调用
    public static void Main(string[] args)
    {
        //声明委托变量
        Attack attack;

        Demo demo = new Demo();

        //初始化委托变量,将方法和委托关联
        attack = new Attack(demo.Fire);
        //向委托添加方法
        attack += demo.Ice;
        //向委托减方法
        //attack -= demo.Ice;
        //调用委托
        string result = attack(100);
        Console.WriteLine(result);
    }

}

2.匿名委托

//定义委托类型
public delegate string Attack(int point);

public class Program
{
    //调用
    public static void Main(string[] args)
    {
        //声明委托变量
        Attack attack = delegate (int point)
        {
            return "属性伤害:" + point + "点\n";
        };
        //调用委托
        string result = attack(100);
        Console.WriteLine(result);
    }
}

  匿名委托只能关联一个方法,好处在于不用专门定义一个委托函数来传递方法。

三.总结

  1.一个委托可以关联多个方法,调用一次委托便可以执行多个方法。

  2.如果委托的方法带返回值,那么最终得到的返回值只有委托最后一个关联方法的返回值。

 

posted @ 2021-04-01 18:37  shine声  阅读(1136)  评论(0编辑  收藏  举报