c#委託學習總結
阿新 • • 發佈:2021-01-20
委託是一個類,它定義了方法的型別,使得可以將方法當作另一個方法的引數來進行傳遞。
委託的宣告:
沒有返回值,沒有引數的委託
public delegate void MyDelegate()
有返回值,有引數的委託:
public delegate string MyDelegate(int i);
通常情況下使用.Net框架定義好的委託,無需自定義委託。
Action:無返回值的泛型委託
Action<int,string> 表示有傳入引數int,string無返回值的委託
Action至少0個引數,至多16個引數,無返回值。
例項:
public static void ChineseGreeting(string name) { Console.WriteLine("早上好," + name); } public static void GreetPeople(string name, Action<string> MarkGreeting) { MarkGreeting(name); } static void Main(string[] args) { GreetPeople("張三", ChineseGreeting); Console.ReadLine(); }
結果:
Func:有返回值的泛型委託
Func<int> 表示無參,返回值為int的委託
Func至少0個引數,至多16個引數,根據返回值泛型返回。必須有返回值,不可void。
例項:
public static string HasReturnMehtodInt(int i) { return "我是一個有引數有返回值的方法,引數為:" + i; } public static string TestMethod(Func<int, string> func) { return func(1); } static void Main(string[] args) { string str = TestMethod(HasReturnMehtodInt); Console.WriteLine(str); Console.ReadLine(); }
結果:
總結:
委託是一個類,它定義了方法的型別,使得可以將方法當作另一個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用If-Else(Switch)語句,同時使得程式具有更好的可擴充套件性。