其實就是利用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的問題.