委托
定义
委托类型是怎么声明出来的?
委托是类类型,是引用类型的一种。
using System;using System.Collections.Generic;namespace Combine{class Program{static void Main(string[] args){// MyDele dele1 = new MyDele(M1());// 此处MyDele(M1)中M1后不加(),是由于是添加M1函数而不是调用M1函数、// dele1这个变量引用着一个MyDele类型的实例,该实例“包裹”着M1方法MyDele dele1 = new MyDele(M1);// 可以包裹多个函数,这样的委托也称为多播委托dele1 += M1;Student stu = new Student();dele1 += stu.SayHello;// 等同于// dele1 += (new Student()).SayHello;dele1.Invoke();dele1();// 实际操作中,大部分使用的是委托变量当做函数调用而不是使用.Invoke();}static void M1(){Console.WriteLine("M1 is called!");}}class Student{public void SayHello(){Console.WriteLine("Hello,I'm a student!");}}delegate void MyDele();}//包裹(引用)只是一种形容,约束是指委托对包裹着的方法的限制
using System;using System.Collections.Generic;namespace Combine{class Program{static void Main(string[] args){// 当委托中函数不符合签名时,如下示例解决方法// 1.添加一个成员函数// 2.函数满足两个成员变脸MyDele dele1 = new MyDele(Program.Add);int res = dele1(100,200);Console.WriteLine(res);}static int Add(int a, int b){return a + b;}}delegate int MyDele(int a,int b);}
