c#委托声明实例化与调用
来源:互联网 发布:mac电脑怎么切换输入法 编辑:程序博客网 时间:2024/05/18 02:30
系统访问数据或调用方法有两种操作方式:一种是通过名称访问或调用,另一种是通过所在的内存地址来访问调用。为了系统的安全与稳定,NET Framework的CLR库不允许程序通过指针来直接操作内存中数据或方法,而是通过托管机制来访问内存中数据或调用内存中的方法。委托就是C#提供的一种以托管机制调用方法的特殊数据类型,其作用于房屋租凭中介机构类似。
下面我们主要围绕以下三点
//1.定义委托
//2.委托的实例化
//3.委托的调用,实际上是将委托指向已经实现的某个方法
//注意:调用的方法必须返回类型和定义的委托返回类型一致
委托是一个类,它定义了方法的类型,使得可以将方法当做参数进行传递。
一:委托的定义
在C#中使用关键字delegate声明委托。声明委托的一般形式是:
//委托的定义
在使用委托前是一定先要定义的
下面我们主要围绕以下三点
//1.定义委托
//2.委托的实例化
//3.委托的调用,实际上是将委托指向已经实现的某个方法
//注意:调用的方法必须返回类型和定义的委托返回类型一致
委托是一个类,它定义了方法的类型,使得可以将方法当做参数进行传递。
一:委托的定义
在C#中使用关键字delegate声明委托。声明委托的一般形式是:
//委托的定义
在使用委托前是一定先要定义的
例如:Delegate void d(int x)
二:实例化( 与方法绑定)
为了与命名方法一起使用,委托必须用具有可接受签名的方法进行实例化。
实例化的方法可用下列方法各项之一
- “委托创建表达式”中引用的静态方法,或者
- “委托创建表达式”中引用的目标对象(此对象不能为 null)和实例方法
- 另一个委托
例如:
Delegate void d(int x) delegate void D(int x);class C{ public static void M1(int i) {...} public void M2(int i) {...}}class Test{ static void Main() { D cd1 = new D(C.M1); // static method Test t = new C(); D cd2 = new D(t.M2); // instance method D cd3 = new D(cd2); // another delegate }}
三.委托调用
创建委托对象后,通常将委托对象传递给将调用该委托的其他代码。通过委托对象的名称(后面跟着要传递给委托的参数,括在括号内)调用委托对象。下面是委托调用的示例:
public delegate int MathOp(int i,int j);//定义委托 class DelegateTest { public static int add(int i, int j) {//方法 return i + j; } public static int Mutiply(int num1, int num2) {//方法 return num1 * num2; } static void Main(string[] args) { MathOp mo = new MathOp(add);//委托的实例化,指向add方法 MathOp maOp = new MathOp(Mutiply);//委托的实例化,指向Mutiply方法 Console.WriteLine(mo(10, 20));//委托的调用 Console.WriteLine(maOp(4, 5));//委托的调用 Console.ReadLine(); } } }
认识:
以前对委托的认识只是知道委托是方法的调用。通过这次的项目实例了解到委托也是需要定义,实例化与调用的。还是先前学艺不精占呀。委托的使用通常与匿名函数或lambda表达式匹配使用,下篇介绍匿名函数。
5 0
- c#委托声明实例化与调用
- 如何声明、实例化和调用委托。
- 委托的声明与实例化使用
- C#委托调用实例
- C#对象的声明与实例化
- c#的委托(2)之调用实例化方法
- c# 委托与异步调用
- C#委托事件定义调用实例
- C#委托调用过程(实例)
- 如何:声明、实例化和使用委托(C# 编程指南)
- 如何:声明、实例化和使用委托(C# 编程指南)GOOD
- 匿名方法与委托关联调用实例
- C# 调用委托线程BeginInvoke与EndInvoke
- C#源代码—声明委托,通过委托对象调用所指向的方法
- c# 【委托】子窗体调用父窗体控件实例
- C# 委托,事件 实例
- C# 委托,事件 实例
- C#委托-总结实例
- 指针数组/数组指针
- UNIX进程之间传递文件描述符recvmsg与sendmsg
- 内部消息 微软中国云计算 内测Azure免费账号 赶紧申请 错过不再有
- BlueTooth: 蓝牙的能耗数字与电池数据
- 联想G510F1F2..功能键和FN+功能键反过来
- c#委托声明实例化与调用
- [ios专项]IOS控件AlertView简单程序_object c
- (dp背包)悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- [LeetCode]3Sum
- js 简单实现一个时间倒计时计数器
- BlueTooth: RF射频通信
- JavaWeb入门
- ARM指令中特殊符号意义
- 浅谈,如何获取MTK CPU信息 请看我是如何做的。一步步来吧