【C#】delegate委託的定義和使用方法
阿新 • • 發佈:2019-01-27
using System; namespace delegate委託的定義和使用方法 { class MainClass { //【1】 定義一個返回值是string,無引數的委託型別 public delegate string GetAstring (); // ------------------------------------------------------------------------ // 【2】定義一個無引數,無返回值的委託 public delegate void WriteString (); // 【2】把委託型別作為方法的引數 static void Write (WriteString printFunction) { // 呼叫委託中所有的方法 printFunction (); } static void WriteTest1 () { Console.WriteLine ("可以把方法1作為引數傳遞"); } static void WriteTest2 () { Console.WriteLine ("可以把方法2作為引數傳遞"); } // ------------------------------------------------------------------------ public static void Main (string[] args) { //【1】--------------------委託變數賦值的兩種方式------------------------ int age = 18; //【1】-----------------------第一種賦值方式---------------------------- // getString指向age中的ToString方法 // new的時候括號裡必須帶有一個,無引數,返回值是string型別的方法 // 根據上面的delegate型別可判斷引數方法的型別 GetAstring getString = new GetAstring (age.ToString); // +=:表示這個委託裡又追加了一個方法,委託了2個ToString方法,還可以追加更多 getString += age.ToString; // 通過委託的例項去呼叫委託裡的方法 string result = getString (); Console.WriteLine ("result: " + result); //【1】-----------------------第二種賦值方式---------------------------- GetAstring getString2 = age.ToString; string result2 = getString2 (); Console.WriteLine ("restlt2: " + result2); //【2】--------------------------------------------------------------- WriteString test = WriteTest1; test += WriteTest2; test += WriteTest2; /* 輸出結果 可以把方法1作為引數傳遞 可以把方法2作為引數傳遞 可以把方法2作為引數傳遞 */ Write (test); } } }