C# 委托与事件

定义委托的语法和定义方法比较相似,只是比方法多了一个关键字delegate ,我们都知道方法就是将类型参数化,所谓的类型参数化就是说该方法接受一个参数,而该参数是某种类型的参数,比如int、string等等;而委托是将方 法参数化,说了上面的那个类型参数化之后,相信你也能猜到方法参数化的意思了,对,就是将方法作为一个参数传到一个委托中。

首先来看看声明委托的语句:

public deletate void MyDelegate();  

public:访问修饰符  delegate:关键字  void:返回类型  MyDelegate:委托名称  ( )参数列表  

 

看到声明大家会想了,为什么该委托的返回值,参数列表要这样的,我不能返回一个 string,一个int么?我不能给委托加几个参数么? 答案是:当然可以,但委托的定义是相对于方法来说的,因为得你的委托最终是要来注册方法的,而你的方法是具有某种签名的,所以你要给怎样签名的方法来声明 一个委托,该委托就要和该方法具有同等的签名,就类似于你用一个int 类型的变量去接受一个string类型的值,显然是不行的(个人理解).... 

 委托只要定义就可以了,我们并不需要关心他的实现  


 delegate void AddListBoxItemDelegate(ListBox listbox, string text);
        private void ShowMessage(ListBox listbox, string text)//显示列表信息
        {
            if (listbox.InvokeRequired)
            {
                AddListBoxItemDelegate d = ShowMessage;
                listbox.Invoke(d, listbox, text);
            }
            else
            {
                listbox.Items.Add(text);
            }
        }


delegate void DeleteListBoxItemDelegate(ListBox listbox, string text);
        private void DispearMessage(ListBox listbox, string text)//显示列表信息
        {
            if (listbox.InvokeRequired)
            {
                DeleteListBoxItemDelegate d = DispearMessage;
                listbox.Invoke(d, listbox, text);
            }
            else
            {
                listbox.Items.Remove(text);
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值