C# 委托入门

摘要


委托是C#语言中非常重要的概念之一,它是一个持有一个或多个方法的对象。与对象不同,委托可以执行其所持有的方法,从而使代码更加灵活和高效。委托可以理解为一种“指针”,指向了某个类型的方法,它可以用来在不同的对象上执行相同的方法。

在C#中,委托有多种用途。首先,它可以用于回调函数,也就是在一个对象完成某个操作后,将控制权交给另一个对象执行相应的操作。其次,委托可以用于事件处理,在事件发生时调用相应的处理方法。最后,委托还可以用于函数指针,实现类似于C++中的函数指针的功能。

委托的语法比较简单,使用关键字“delegate”定义一个委托类型,然后在需要使用委托的地方使用“=”操作符将其赋值给委托变量。委托类型定义了一个类型签名,类似于C++中的函数指针类型。

委托的最大优点是它可以让代码更加灵活和高效。由于委托可以执行其所持有的方法,因此可以在不同的对象上执行相同的方法,而不需要在每个对象上都定义相同的方法。这可以大大减少代码量和复杂度,提高代码的可维护性和可重用性。

正文


对于委托,有两个字“回调”这是重点。

一个例子

delegate void DelNumber(int value);

void ShowLow(int value)
{
    MessageBox.Show("低值" + value.ToString());
}

void ShowHigh(int value)
{
    MessageBox.Show("高值" + value.ToString());
}

private void btnShow_Click(object sender, EventArgs e)
{
    DelNumber delNumber;
    Random random = new Random();
    int value = random.Next(1, 99);
    delNumber = value < 50 ? new DelNumber(ShowLow) : new DelNumber(ShowHigh);
    delNumber(value);
}

image.png

声明流程

image.png

组合委托

委托可以使用额外的运算符来组合,这个运算符最终会创建一个新的委托

delegate void MyDel(string value);

void Print(string value)
{
    MessageBox.Show("Print " + value);
}

void Show(string value)
{
    MessageBox.Show("Show " + value);
}

private void btnShow_Click(object sender, EventArgs e)
{
    MyDel del1 = new MyDel(Print);
    MyDel del2 = new MyDel(Show);
    MyDel del3 = del1 + del2;
    del3("TEST");
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • c#1 是在2002年初的时候发布的,目前开发语言有很多,我个人还是觉得c++,java,c#算是老大哥级别,天下...
    苍龙月阅读 232评论 0 0
  • 委托是C#重要特性之一,C#中很多特性都是建立在委托的基础之上。 什么是委托 委托也叫代理delegate,就是把...
    JunChow520阅读 8,375评论 2 7
  • 一、unity里使用委托常见场景 1、在绑定按钮事件的使用场景里,如果想批量地绑定按钮事件,同时想通过绑定事件传递...
    GameObjectLgy阅读 384评论 0 0
  • 委托在编译的时候会编译成类;是一种引用类型,定义了方法的类型;委托保存的是对函数(function)的引用。 声明...
    1cf694582c2f阅读 383评论 1 2
  • 本来应该学习泛型与委托的,但是发现C#这里还没有系统的记录过委托与事件,所以先打算把委托与事件补上再继续泛型与委托...
    一个有味道的名字阅读 1,503评论 1 5