C#中怎么委托

这篇文章主要为大家展示了“C#中怎么委托”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#中怎么委托”这篇文章吧。

专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!创新互联为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,成都网站设计、成都做网站负责任的成都网站制作公司!

一、是什么

1)委托包含对方法而不是方法名称的引用。使用委托可以在运行时动态设定要调用的方法,不知道方法名称,也可以调用方法,执行(或调用)一个委托将执行该委托引用的方法。

2)委托将名称与方法的定义连接起来,即将方法的实现附加到该名称。这样便可以使用该名称调用特定的方法。但是,委托要求方法的实现和委托必须具有相同的方法签名(也就是说,他们应该具有相同数量/类型的参数),并有相同类型的返回值。

3)委托更像一个具有通用的方法名称,在不同的情况将该名称指向不同的方法,并通过委托执行这些方法。

二、怎么用

使用委托包括三个步骤:

1)定义委托

2)实例化委托

3)使用委托

我们上一个例子:

class Program
{
    //定义一个委托
    public delegate int Call(int num1, int num2);
                                                     
    class Math
    {
        public int Mutiply(int num1, int num2)
        {
            return num1 * num2;
        }
                                                     
        public int Divide(int num1, int num2)
        {
            return num1 / num2;
        }
    }
                                                     
    static void Main(string[] args)
    {
        Call objCall;
        Math objMath = new Math();
        objCall = new Call(objMath.Mutiply);//实例化一个委托
                                                     
        int result = objCall(5, 3);//使用委托
        Console.WriteLine("结果为 {0}", result);
    }
}

上面的例子,我们再进一步,用匿名委托实现:

static void Main(string[] args)
{
    Call objCall = delegate(int num1, int num2) { return num1 * num2; };//匿名委托
    int result = objCall.Invoke(3, 5);//使用委托
    Console.WriteLine("结果为 {0}", result);//输出:结果为 15
}

我们还可以将:

int result = objCall.Invoke(3, 5);//使用委托

替换为:

int result = objCall(3, 5);//使用委托

效果是一样的。

再进一步,用Lambda表达式进行简化,可以将:

Call objCall = delegate(int num1, int num2) { return num1 * num2; };//匿名委托

替换为:

Call objCall = (int num1, int num2) => { return num1 * num2; };//Lambda表达式

更简化一步,变为:

Call objCall = (num1, num2) => { return num1 * num2; };//Lambda表达式

这就是C#委托的进化过程以及C#Lambda表达式对委托的支持。

三、什么时候用

1)委托类似于C语言中的函数指针,可以将方法作为函数的参数进行传递

2)当不知道方法的具体实现时,就可以定义个委托,让它替我们干活

3)我们在编程时用的最多的就是事件注册时使用。

比如:

this.button1.Click += new EventHandler(button1_Click);//button1注册Click事件
private void button1_Click(object sender, EventArgs e)
{
    //方法具体实现内容
}

可以看到方法button1_Click作为参数传递给了EventHandler委托。

再比如在线程方法中:

Thread th = new Thread(new ThreadStart(Method));//这里的ThreadStart就是一个委托,里面可以直接传一个方法名Method,以委托的形式调用方法
th.IsBackground = true;
th.Start();

以上是“C#中怎么委托”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!

新闻标题:C#中怎么委托
分享网址:https://www.cdcxhl.com/article20/jjphjo.html

成都网站建设公司_创新互联,为您提供外贸建站品牌网站制作外贸网站建设搜索引擎优化服务器托管ChatGPT

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都做网站