c#中內建委託
阿新 • • 發佈:2020-07-19
一、Action泛型委託
和之前委託最大區別在於不用定義委託,直接例項化委託(申明就可以),泛型其實就是選擇資料型別,進行使得程式更加安全,並且也實現了委託的過載,最多選擇16個引數。
namespace 自定義委託 { class Program { Action<string> actHandler; public Program() { actHandler += Test1; actHandler += Test2; } publicvoid Test1(string str) { Console.WriteLine("I am Test1 "+str); } public void Test2(string str) { Console.WriteLine("I am Test2 "+str); } public void Display() { actHandler("nice"); } staticvoid Main(string[] args) { Program obj = new Program(); obj.Display(); } } }
委託還有一個好處是,當執行委託時,委託中的一個變數發生變化,會引起所有註冊方法的變化,就是我們所說額觀察者模式。
Func<T>表示註冊的方法有返回值,返回型別是<>最後一個引數是返回型別,而Action<T>表示註冊的無返回值,其實都類似。
Predicate<T>表示註冊的方法返回值為bool型別,並且只有一個返回值,是Func<T>的一個特例。