c#11委托、事件、反射

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

namespace _11
{
public class Hello
{
///
/// 定义好事件的委托
///
public delegate void ShowHIDelegate();
///
/// 定义好一个你好的事件
///
public event ShowHIDelegate ShowHievent;

    public void ClickShowHievent()
    {
        if (ShowHievent != null)
        {
            //执行问好的方法
            ShowHievent();
        }
    }
}

}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _11
{
///
/// 日本人
///
public class Jp
{
public void ShowHi()
{
Console.WriteLine(“日本人:你好”);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _11
{
///
/// 美国人
///
public class USA
{
public void ShowHi()
{
Console.WriteLine(“美国人:你好”);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _11
{
class Program
{
///
/// 可以将方法作为参数传递的特殊的引用类型变量
/// 实现方法的模板->抽象类 接口 (针对于方法)
/// 实现委托的方法必须和委托定义的一模一样
///
//delegate void ShowHi(string str);
static void Main(string[] args)
{
//ShowHi sh = new ShowHi(ShowHi2);
//sh(“zs”);

        //加事件+= 减事件-=
        //实际上事件的运行的规则和过程与委托一致
        //事件最终执行的内容依然是委托
        //事件和委托的关联是因为
        //在定义事件的时候就会有一个委托的定义
        //并且事件的类型 就是当前的委托
        //1需要实例化你的发布器
        Hello h = new Hello();
        //2需要实例化你的订阅器
        Jp j = new Jp();
        USA u = new USA();
        //3给发布器加上订阅器
        h.ShowHievent += new Hello.ShowHIDelegate(j.ShowHi);
        h.ShowHievent += new Hello.ShowHIDelegate(u.ShowHi);
        //4给发布器去除订阅器
        h.ShowHievent -= new Hello.ShowHIDelegate(u.ShowHi);
        //5执行事件
        h.ClickShowHievent();

        Console.ReadKey();



        Console.ReadKey();
    }
    //public static void ShowHi2(string str)
    //{
    //    Console.WriteLine("你好" + str);
    //}
}

}
以上是委托的和事件的简单案例。反射在很多高级语言都有介绍,大都大同小异。
委托就是第三方,调用者告诉第三方要做什么,然后调用者就不用管了 这个委托(第三方)就会去调用方法去帮你实现
委托的好处: 1.相当于用方法作为另一方法参数(类似于C的函数指针)

2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托

3.当不知道方法具体实现什么时使用委托,如:事件中使用委托

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值