C# 关于委托知识点
一、:
1、委托是函数的容器,用于装载或传递函数的(可以作为函数的参数)
2、可以理解为表示函数的变量类型
3、委托本质是一个类,用来定义函数的类型(返回值和参数的类型)
4、不同的函数 必须对应和各自“格式”一致的委托 也就是说 比如定义的委托是无参无返回的 那么装的函数就必须是无参无返回的
二、
1、委托的基本语法
关键字:delegate
语法:访问修饰符 delegate 返回值 委托名(参数列表);
写在哪里:委托一般写在nameSpace 和 class语句中
更多写在nameSpace
三、
委托的使用:
using System.Security.Cryptography.X509Certificates; namespace ConsoleDelegate { //二、委托使用 //(1) //定义一个委托 无参无返回委托 //这里只是定义了规则 并没有使用 public delegate void MyDelegate1(); //委托规则的声明 是不能重名(同一语句块中) //表示用来装载或传递 返回值为int 有一个int参数的函数的 委托 public delegate int MyDelegate2(int a); public class Delegate { //(2) //定义一个与委托签名匹配的方法 public static void ShowMessage() { Console.WriteLine("委托1"); } public static void ShowMessage2() { Console.WriteLine("委托2"); } //定义一个带参数的方法 public static int Showint(int a) { return a; } static void Main(string[] args) { //(3) //第一种装载委托的方式 //专门用来装载 函数的 容器 MyDelegate1 del1 = new MyDelegate1(ShowMessage); MyDelegate2 del2 = new MyDelegate2(Showint); //第二种装载委托的方式 MyDelegate1 del3 = ShowMessage; MyDelegate2 del4 = Showint; //(4) //第一种 启用委托方式 del1.Invoke(); Console.WriteLine(del2.Invoke(2)); //第二种启用委托方式 del3(); int c = del4(3); Console.WriteLine(c); Console.WriteLine("----------------------"); //三、委托可以存储多个函数(委托多播 增、删 //增 MyDelegate1 del5 = ShowMessage; del5 += ShowMessage2; del5(); MyDelegate1 del6 = new MyDelegate1(ShowMessage); del6 += ShowMessage2; del6.Invoke(); //删 del5 -= ShowMessage; del5(); //---------------- //TestDelegate类 TestDelegate testDelegate = new TestDelegate(); testDelegate.TestFun(del1, del2); } } //四、使用定义好的委托 //1、委托变量是函数的容器 //2、委托常用在: //(1)作为类的成员 //(2)用来作为函数的参数 class TestDelegate { MyDelegate1 delegate1; MyDelegate2 delegate2; public void TestFun(MyDelegate1 myDelegate1, MyDelegate2 myDelegate2) { //先执行一些别的逻辑,当这些逻辑执行完了,再传入的函数 int i = 2 * 3; i = i + 6; delegate1 = myDelegate1; delegate2 = myDelegate2; Console.WriteLine(delegate1+"$"+delegate2); } } }
浙公网安备 33010602011771号