浅谈C#委托和事件
2015-08-02 15:12
232 查看
浅谈C#委托和事件
委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要的介绍一下委托的基本知识:委托的定义
委托的声明原型是
delegate <函数返回类型> <委托名> (<函数参数>)
例子:public delegate void CheckDelegate(int number);//定义了一个委托CheckDelegate,它可以注册返回void类型且有一个int作为参数的函数
这样就定义了一个委托,但是委托在.net内相当于声明了一个类(在后面的代码中会讲到确实如此),类如果不实例化为对象,很多功能是没有办法使用的,委托也是如此.
委托的实例化
委托实例化的原型是
<委托类型> <实例化名>=new <委托类型>(<注册函数>)
例子:CheckDelegate _checkDelegate=new
CheckDelegate(CheckMod);//用函数CheckMod实例化上面的CheckDelegate 委托为_checkDelegate
在.net 2.0开始可以直接用匹配的函数实例化委托:
<委托类型> <实例化名>=<注册函数>
例子:CheckDelegate _checkDelegate=CheckMod;//用函数CheckMod实例化上面的CheckDelegate 委托为_checkDelegate
现在我们就可以像使用函数一样来使用委托了,在上面的例子中现在执行_checkDelegate()就等同于执行CheckMod(),最关键的是现在函数CheckMod相当于放在了变量当中,它可以传递给其它的CheckDelegate引用对象,而且可以作为函数参数传递到其他函数内,也可以作为函数的返回类型
用匿名函数初始化委托
上面为了初始化委托要定义一个函数是不是感觉有点麻烦,另外被赋予委托的函数一般都是通过委托实例来调用,很少会直接调用函数本身。
在.net 2.0的时候考虑到这种情况,于是匿名函数就诞生了,由于匿名函数没有名字所以必须要用一个委托实例来引用它,定义匿名函数就是为了初始化委托
匿名函数初始化委托的原型:
<委托类型> <实例化名>=new <委托类型>(delegate(<函数参数>){函数体});
当然在.net 2.0后可以用:
<委托类型> <实例化名>=delegate(<函数参数>){函数体};
例子:
相关文章推荐
- C#高效分页代码(不用存储过程)
- [项目实战派]csharp通过dll调用opencv函数,图片作为参数
- C#数据类型
- C#关键字列表
- 课程小结-C#进制转换
- 解 自己关于 C# Button的Click事件的疑惑
- C#自动选择出系统中最合适的IP地址
- C# WinForm程序退出的方法
- C#中 DataGridView 属性说明(转载)
- C#中Using用法
- c# MessageBox.Show()常用用法
- C#隐私信息(银行账户,身份证号码,名字)中间部分特殊字符替换(*)
- C#模板引擎 RazorEngine3.7的简单使用
- C#读写共享文件夹
- c# 反射类字段
- C#调用jar包方法
- c# 调用c DLL 所传参数不正确
- c#事件与委托
- C#之Action和Func的用法
- 银联SOFTPOS客户端接口 C#例子