其实就是利用Action实现函数回调
-
如果不是很理解函数毁掉,先看这篇文章,写的可以说是非常非常的简单了,我也只是小白,所以站在小白的角度来写的
C#简单理解回调函数,用action简单实现 -
如果理解的话,那么直接看代码吧,可以说是短小精悍了
不可能看不懂
using System;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
//我们声明字典,key是string类型,当然了,其他的合适类型也都是可以的
//value是Action<string>类型的,直接理解为方法类型就行,但是这个方法只能接受一个string类型的参数
Dictionary<string,Action<string>> test1 = new Dictionary<string,Action<string>>();
//把我们声明的只接收一个string参数的方法放进去
test1.Add("myAction1",TestAction1);
//调用即可,应该会打印出
//Hello world
test1["myAction1"]("Hello world");
}
//定义一个方法,用来放进Dictionary中
public static void TestAction1(string param)
{
Console.WriteLine(param);
}
}
补充
没有说只能回调static的函数,比如下面的这段代码
using System;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
Dictionary<string,Action<string>> test1 = new Dictionary<string,Action<string>>();
//声明一个类的实例
Test myTestClass = new Test();
//将实例中的函数放进去
test1.Add("myAction1",myTestClass.TestAction1);
test1["myAction1"]("Hello world");
}
//声明为非staitc的函数
public void TestAction1(string param)
{
Console.WriteLine(param);
}
}
有同学问:为什么不直接把函数放进去,还非要声明一个实例呢?
同学啊,不是static的方法就不是类的方法啊,只能通过实例来调用,不是dictionary的问题.