C#委托
来源:互联网 发布:otsu算法 opencv 编辑:程序博客网 时间:2024/06/06 14:10
概念:
委托是一个类(方法类),它定义了方法类型,使得可以将被委托方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
1)使用关键字delegate进行委托的申明:
public delegate int MyDelegate(int x, int y);
2)委托的签名(由返回类型和参数组成)和被委托的方法签名要一致,与委托的签名匹配的任何可访问类或结构中的任何方法都可以分配给该委托。
3)创建被委托的方法(与委托相同签名):
//创建与委托相同签名的方法(被委托方法)public static int Adding(int m, int n){ return m + n;}
4)创建委托对象并使之与特定方法(被委托方法)关联:
MyDelegate md = new MyDelegate(MyClass.Adding);//或:MyDelegate md=MyClass.Adding; //C#2.0//或用匿名方法:MyDelegate md=delegate(int m,int n){return m+n;} //C#2.0+//或使用 Lambda表达式:MyDelegate md=(int m,int n)=>{return m+n};4)调用:
md(1,2);
完整示例:
namespace com.test{ //申明委托 public delegate int MyDelegate(int x, int y); public partial class WebForm1 : System.Web.UI.Page { //创建与委托相同签名的方法(被委托方法) public static int adding(int m, int n) { return m + n; } protected void Page_Load(object sender, EventArgs e) { //实例化委托,关联被委托方法 MyDelegate md1=new MyDelegate(adding); //调用 show.InnerHtml = md1(1, 1).ToString(); //实例化委托,关联被委托方法,C#2.0 MyDelegate md2 = adding; //调用 show2.InnerHtml = md2(2, 2).ToString(); //实例化委托,关联被委托方法(使用匿名方法),C#2.0+ MyDelegate md3 = delegate(int m, int n) { return m + n; }; //调用 show3.InnerHtml = md3(3, 3).ToString(); //实例化委托,关联被委托方法(使用Lambda表达式),C#3.0+ MyDelegate md4 = (int m, int n) => { return m + n; }; //调用 show4.InnerHtml = md4(4, 4).ToString(); } }}
- C#委托-委托概述
- C#委托
- C#委托
- C#委托
- c#委托
- C# 委托
- C#委托
- C# 委托
- c#委托
- C#委托
- c#委托
- C#委托
- C# - 委托
- C#委托
- C#委托
- C#委托
- C# 委托
- c#委托
- big endian vs little endian
- php不常用的函数
- 用Delphi将数据导入到Excel并控制Excel
- 正在进行调试的Web服务器进程已由Internet信息服务(IIS)终止。可以通过在IIS中配置应用程序池Ping设置来避免这一问题。有关更多详细信息,请参见“帮助”
- 算法:快速排序以及第k小元素的线性选择算法
- C#委托
- 关于如何找到vmx文件(虚拟系统配置文件)的方法
- linux sed 命令详解
- windos 远程连接提示超过最大连接数
- kill后经常用到的信号主要如下:
- python decorator
- 如何操作xlsx结尾文件,使其写入文本
- thread.start和 thread.run 的区别
- linux初次使用切换为root用户