C#委托

本文介绍C#中的委托概念,包括其定义、声明、创建及调用过程,并通过具体示例展示了不同版本C#中委托的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念:

委托是一个类(方法类),它定义了方法类型,使得可以将被委托方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用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();
        }

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值