c# 委托 delegate
来源:互联网 发布:网络批发服装 编辑:程序博客网 时间:2024/06/05 13:27
/// <summary> /// 委托:delegates; /// 1,允许你引用函数而不是直接调用,通常用于实现称为回调的技术,对特定函数执行调用并通知 /// 已执行完成。一般用于事件说非常有用。 /// 2,委托是包含方法引用的引用类型,可认为是指向函数的指针,而非直接调用函数。 /// 可帮助改进应用程序的响应灵敏性 /// </summary>
1 /// <summary> 2 /// 如下是一个委托类型:MethodeDe,无函数主体 3 /// 创建委托类型:MethodeDe的对象:method,并指向函数Add, 4 /// 注意:委托类型 和 它指向的函数对象,必须有相同的签名(返回类型和形参) 5 /// 函数修饰必须为static 6 /// </summary> 7 /// <param name="n1"></param> 8 /// <param name="n2"></param> 9 /// <returns></returns>10 private delegate int MethodDe(int n1, int n2);11 12 static int Add(int n1, int n2)13 {14 return n1 + n2;15 }16 17 //委托的初体验18 int n1 = 1, n2 = 2;19 MethodDe method=new MethodDe(Add); //或:MethodeDe method=Add;20 MethodDe method2; //now the method2 is null21 method(n1,n2); //调用委托类型对象,直接指向 Add
1 /// <summary> 2 ///委托链接,即多播委托,使一个委托指向多个函数 3 /// </summary> 4 delegate void MethodDe2(); 5 6 static void method1() 7 { 8 Console.WriteLine("method1"); 9 }10 static private void method2()11 {12 Console.WriteLine("method2");13 }14 15 //多播委托:16 //执行的时候会顺序执行:17 MethodDe2 methodDe2 = method1;18 methodDe2 += Program.method2;19 methodDe2();
1 /// <summary> 2 /// 调用delegate的时候,发生错误不会返回数值,固用try catch throw: 3 /// </summary> 4 /// <param name="n1"></param> 5 /// <param name="n2"></param> 6 /// <returns></returns> 7 private delegate int MethodDe3(ref int n1,ref int n2); 8 9 private static int method3(ref int n1, ref int n2)10 {11 throw new Exception();12 Console.WriteLine("methode3");13 return n1 + n2;14 }15 16 //委托的异常捕捉17 MethodDe3 methodDe3 = method3;18 //methodDe3(ref n1,ref n2);
1 /// <summary> 2 /// 委托的最有用的操作是实现回调,回调是传入函数的方法,在函数执行完时调用该方法 3 /// 下面是一个直接回调 4 /// </summary> 5 /// <param name="message"></param> 6 private delegate void CallBackDe(string message); 7 8 static private void AddTwoNum(int n1, int n2, CallBackDe callBack) 9 {10 int result = n1 + n2;11 callBack("this result:" + result.ToString());12 }13 14 static private void ResultCallBack(string message)15 {16 Console.WriteLine(message);17 }18 19 //委托的回调20 CallBackDe callBack = ResultCallBack;21 AddTwoNum(5,3,callBack);
1 /// <summary> 2 /// 委托的最有用的操作是实现回调,回调是传入函数的方法,在函数执行完时调用该方法 3 /// 下面是一个异步回调,最有用 4 /// </summary> 5 /// <param name="message"></param> 6 private delegate int MethodDeleagate(int n1, int n2); 7 static private int AddTwoNums(int n1, int n2) 8 { 9 System.Threading.Thread.Sleep(2000);10 return n1 + n2;11 }12 static private void ResultCB(IAsyncResult ar)13 {14 MethodDeleagate del = (MethodDeleagate) ((AsyncResult) ar).AsyncDelegate;15 int result = del.EndInvoke(ar);16 Console.WriteLine("Result of addition is:"+result);17 }18 19 //委托的异步回调20 // 工作原理:21 //1,首先有两个委托,一个del指向AddTwoNumbs,用来加数,一个callback是AsyncCallback的委托对象,用来等del委托结束后调用22 //2,然后开始开始调用del委托,并传入必要的两个int参数和额外的callback,null23 //3,这样子del和main就会成了两个线程,交替执行,24 //4,而del.BeginInvoke调用返回的result将会成为参数放到 当del完成后调用委托对象的callback里25 //5,此时callback委托也开始运行了,它得到了del中得到的返回值26 //6,总结,一定会很有用27 MethodDeleagate del = AddTwoNums;28 AsyncCallback callback=new AsyncCallback(ResultCB);29 30 Console.WriteLine("invokeing the method asynchronously...");31 IAsyncResult result = del.BeginInvoke(5, 3, callback, null);32 Console.WriteLine("continuing whith the execution...");33 Console.ReadLine();
0 0
- C# 委托(delegate)
- Delegate 委托 C#
- C# 委托(Delegate)解析
- C#委托delegate使用
- C#的委托 delegate
- C# 委托(delegate)
- C#委托,delegate
- C#中的委托delegate
- c# 委托 delegate
- C#委托 Delegate
- C#委托delegate
- C# delegate - 委托
- C# 委托(Delegate)
- C# 委托 delegate
- C#学习--委托 Delegate
- C#委托 delegate
- C#委托Delegate
- C# 委托(Delegate)
- win7下80端口被(Pid=4)占用的解决方法
- Meanshift
- web入门-页面编码
- hdu1527取石子游戏
- C++动态螺旋数组 怎么样开辟合适内存空间
- c# 委托 delegate
- 按钮上图片加到自定义导航栏变色的问题
- java实验10-java数据库编程
- 折菊寄思
- leetcode OJ Unique Binary Search Trees
- mysql-5.5.25-winx64安装与介绍
- 阿里巴巴2015研发工程师笔试题,带答案
- 求最大值的方法
- c# 接口interface 入门