0
点赞
收藏
分享

微信扫一扫

C#编程:委托详解


C#编程:委托详解_自定义


什么是委托


  • 委托(delegate)是函数指针的“升级版”
  • 一切皆地址
  1. 变量(数据)是以某个地址为起点的一段内存中所存储的值
  2. 函数(算法)是以某个地址为起点的一段内存中所存储的一组机器语言指令
  • 直接调用与间接调用
  • 直接调用:通过函数名来调用函数,CPU通过函数名直接获取函数所在地址并开始执行—>返回
  • 间接调用:通过函数指针来调用函数,CPU通过读取函数指针存储的值获得函数所在地址并开始执行—>返回


使用委托注意要点:类型兼容
1、返回值的数据类型一致
2、参数个数和参数的数据类型一致



委托示例


  • 系统自带的简单委托
  • Action委托(无返回值)
  • Func委托(有返回值)
  • ​​学习链接​​


自定义委托


using System;

namespace 自定义委托
{
//声明委托
delegate double Caldele(double a, double b);
//返回值类型 参数列表
class Program
{
static void Main(string[] args)
{
//实例化一个类
Calcultor cc = new Calcultor();

//实例化一个委托,并且填入方法
Caldele cade1 = new Caldele(cc.Add);
Caldele cade2 = new Caldele(cc.Sub);
Caldele cade3 = new Caldele(cc.Mul);
Caldele cade4 = new Caldele(cc.Div);

double a = 100, b = 200, c = 0;

//通过委托间接调用
c = cade1(a, b);
System.Console.WriteLine(c);

c = cade2(a, b);
System.Console.WriteLine(c);

c = cade3(a, b);
System.Console.WriteLine(c);

c = cade4(a, b);
System.Console.WriteLine(c);

System.Console.WriteLine("Hello World!");
System.Console.ReadKey();
}
}

class Calcultor {

//自定义类及方法
public double Add(double a, double b) {
return a + b;
}
public double Sub(double a, double b)
{
return a - b;
}
public double Mul(double a, double b)
{
return a * b;
}
public double Div(double a, double b)
{
return a / b;
}
}
}


委托的一般使用
实例:把方法当作参数传给另一个方法
正确使用1:模板方法,“借用”指定的外部方法来产生结果
正确使用2:回调(callback)方法,调用指定的外部方法




举报

相关推荐

C#委托,事件详解

C#——委托

C#之委托

C#委托总结

C#事件委托

0 条评论