C#回调函数

如果要说回调函数,那又不得不提起委托了为啥呢?这和回调函数的使用方法形式有关,什么是回调函数呢?
回调函数在字面上来看其实就是在执行完一些事情,重新调用不属于他的某些东西好吧直接上例子

using System;

delegate void DelegateDone(bool dothing);
class Program
{
   static void Main()
    {
        Program program = new Program();
        program.Dosomthing(DoOtherThing);

        Console.Read();
    }

    void Dosomthing(DelegateDone callback)
    {
        Console.WriteLine("执行某一函数");

        bool isdone = true;
        callback(isdone);
    }

   static void DoOtherThing(bool isdone)
    {
        if(isdone)
        {
              Console.WriteLine("回调函数");
        }
        
    }
}

执行效果
在这里插入图片描述
所以可以看出,回调函数其实就是结束了某一个函数方法的功能之后,开始执行另一个方法,而另一个方法是怎么执行的呢?首先要将方法当作参数传到被调函数中,被调函数的参数并不是简单的类型,而是委托类型,也就是可以接收函数地址的,那么在调用函数的人在传参数的时候就相当与将调用时传进的参数注册到委托里面。回调函数并不是自己使用,而是定义之后给其他人使用。
类之间的回调函数:

using System;
using System.Threading;
using static System.Net.Mime.MediaTypeNames;
delegate void makesum(int a, int b);
class Text1
{
    static void Main()
    {
        
        Text1 sam = new Text1();
        Text2 sam2 = new Text2();
        Text1.Begin(Text2.with);
        Console.Read();
       
    }  
    static void Begin(makesum add)
    {
        Console.WriteLine("开始的方法");
        int a, b;
        a = b = 1;
        add(a,b);
    }
    public void shenm(int a,int b)
    {
        Console.WriteLine(a * b);
    }
}
class Text2
{
    public static void with(int a,int b)
    {
        Text1 text1 = new Text1();
        Console.WriteLine(a + b);
        
        
        Console.WriteLine("休眠结束");
        abcd(text1.shenm);
    }
    public static void abcd(makesum bcd)
    {
        int a, b;
        a = b = 2;
        bcd(a, b);
    }
}

在这里插入图片描述

小白笔记,可能理解的不够深刻,请多见谅。

发布了67 篇原创文章 · 获赞 3 · 访问量 1905

猜你喜欢

转载自blog.csdn.net/lfanyize/article/details/103150584
今日推荐