3.10C#引用类型之委托(Delegate)

委托声明

委托类型 表示对具有 特定参数列表返回类型 的方法的引用,类似于其它一些语言中存在的“函数指针”概念。

委托类同于函数式语言提供的函数类型。通过委托,可以将方法视为可赋值给变量或作为参数传递的实体。

具有相同参数列表和返回类型的两个不同的委托类型被视为不同的委托类型。

delegate 返回类型 委托名<类型变量>(参数); 

目标方法

委托可以引用静态方法、实例方法、Lambda 表达式等目标方法。

目标方法应与委托声明具有相同的方法签名,注意:此时的返回类型是方法签名的一部分。

委托实例化

//new创建法
委托名 变量 = new 委托名(目标方法);

//直接赋值法
委托名 变量 = 目标方法;
public delegate void Del(string message);

public static void DelMethod(string str)
{
    Console.WriteLine("DelMethod argument: {0}", str);
}

//new创建法
Del exampleDel1 = new Del(DelMethod);

//直接赋值法
Del exampleDel2 = DelMethod;

调用委托实例

将变量视为方法名称,并使用普通方法调用语法调用它。

//直接调用,如果委托是null会生成异常
变量();
//调用之前可以检查是否为null
变量?.invoke();
exampleDel1("Hey");

exampleDel2("Hey");

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/csharplang/8286.html

(0)
上一篇 2021年3月9日 20:06
下一篇 2021年3月11日 00:50

相关推荐

  • 3.1C#语言的命名空间(Namespace)

    命名空间声明 从 C# 10 开始,您可以为该文件中定义的所有类型声明命名空间。 引入命名空间

    C#语言教程 2021年3月1日
    01640
  • 2.6C#函数成员之索引器(Indexer)

    索引器声明 索引器的声明方式与属性类似,不同之处在于,格式为索引器名称 this 后跟 分隔符 [ 和 ] 以及参数列表。这些参数在索引器的访问器中可用。  访问器 类似于属性,索引器分为读写、只读和只写索引器。 访问索引器 重载 索引器支持重载。

    C#语言教程 2021年2月6日
    01140
  • 2.9C#函数成员之构造函数(Constructor)

    构造函数的声明方式与方法一样,不过没有返回类型,且与所属类同名。 如果没有为类提供实例构造函数,则会自动提供不含参数的空实例构造函数。 构造函数分类 名称 修饰符 用途 静态构造函数 用 static 修饰 用于实现第一次加载时初始化类本身所需的操作。 实例构造函数 无 static 修饰 用于实现初始化类的实例所需的…

    C#语言教程 2021年2月9日
    0960

发表评论

登录后才能评论