萌新关于C#委托一点见解

时间:2023-12-28 17:13:14

开博第一写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)//

}

注:新人初写,还在学习,请大家多提意见!另外请大佬告知怎么学好匿名委托【发愁中】