概述
C#
的委托是一种类型安全的函数指针,用于引用方法,委托允许方法作为参数传递,或者将方法赋值给委托变量,并通过委托调用方法。
委托类型:委托定义了方法的的签名([方法的参数类型和返回值]
),所以,委托只能引用符合签名的方法。
委托实例:委托是一个引用类型,可以实例化并指向一个或多个符合委托签名的方法。
多播委托:C#
支持将多个方法绑定到一个委托实例中,这种委托称为“多播委托”,可以依次调用这些方法。
委托声明
自定义委托的声明使用delegate
关键字,类似于方法的签名,但是它是一个[引用类型]
,指定了返回值以及参数类型。
public delegate int CustomDelegate(int x,int y);
CustomDelegate
是委托的类型,可以引用任何为 int Method(int x ,int y)
的方法,注意返回值和参数类型要一致。
委托使用
以图片处理为例,假设封装了一个图片处理的SDK
给三方做二次开发,如果三方想拓展图片处理的方法,又不能在SDK中拓展,使用委托方式比较合适,支持客户自定义然后使用委托方式调用。
首先新建图片类。
public class Image
{
string Name {
set; get; }
}
处理图片的方法都放在ImageTools
类中,封装成SDK
给三方使用,有以下处理方法。
public class Tools
{
public void ImageFilters(Image image)
{
Console.WriteLine("[SDK]-添加滤镜");
}
public void AdjustColor(