C#將方法裝進Dictionary中

其實就是利用Action實現函數回調

  1. 如果不是很理解函數毀掉,先看這篇文章,寫的可以說是非常非常的簡單了,我也只是小白,所以站在小白的角度來寫的
    C#簡單理解回調函數,用action簡單實現

  2. 如果理解的話,那麼直接看代碼吧,可以說是短小精悍了
    不可能看不懂

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的問題.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章