c#中委托、事件之我见(一)

    针对c#中是委托,以及与委托连在一起的事件,讲一下我个人的理解。本节先讲什么是委托,后续讲到与委托紧密相关事件,以及委托带来的好处等等。

 

一、什么是委托

    首先,委托是一个类,理解这一点很重要。既然是类,那么我们一般在使用一个类的时候,都是先调用该类的构造函数实例化出该类的一个对象,然后再操作该对象。委托也是如此,不过委托类很特殊,只有一个构造函数,构造函数参数为另一个函数的函数名

二、委托的作用

    委托是一个特殊的类,上面说了,该类的构造函数参数是另一函数的函数名。实例化出来的对象就指向该函数地址,可以理解为委托类对象就是保存了另一函数地址的指针或者引用。那么在调用委托类对象的时候,执行的是委托类对象指向的函数。

三、实例说明

     新建一项目,在窗体代码中添加如下代码

     先定义如下的委托声明,这个委托有一String型的参数,并返回一bool型值,委托与委托指向的函数必须具有相同的参数与返回值。

        private delegate bool TestDelegate(string strMsg);

    委托声明遵循格式:[访问修饰符] delegate 返回值类型 委托标识符名字([形参列表]);

    定义委托类对象

        private TestDelegate objTestDelegate;

    定义一函数,用来绑定委托,函数参数与返回值需与委托声明保持一致。

        private bool TestFucn(string strMsg)

        {

            MessageBox.Show(strMsg);

            return true;

        }

    在窗体上放一个NamebtnCallDelegate的按钮,在click事件中添加如下代码

        private void btnCallDelegate_Click(object sender, EventArgs e)

        {

            //委托绑定

            if (objTestDelegate == null)

                objTestDelegate = new TestDelegate(TestFucn);

            //委托调用

            objTestDelegate.Invoke("This is a test");

        }

从上面可以看出,在实例化委托对象后,调用委托实际上是调用了该委托指向的函数。

 

完整类代码如下:

public partial class test : Form

    {

        public test()

        {

            InitializeComponent();

        }

 

        //委托定义

        private delegate bool TestDelegate(string strMsg);

        //委托类对象声明

        private TestDelegate objTestDelegate;

 

        //委托指向的函数定义

        private bool TestFucn(string strMsg)

        {

            MessageBox.Show(strMsg);

            return true;

        }

 

        private void btnCallDelegate_Click(object sender, EventArgs e)

        {

            //委托绑定

            if (objTestDelegate == null)

                objTestDelegate = new TestDelegate(TestFucn);

            //委托调用

            objTestDelegate.Invoke("This is a test");

        }

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值