本文共 1537 字,大约阅读时间需要 5 分钟。
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); } }}
转载地址:http://cukii.baihongyu.com/