c# 带返回值的action_C#委托(delegate、Action、Func、predicate)和事件

原标题:C#委托(delegate、Action、Func、predicate)和事件

一、前言

刚开始工作的时候,觉得委托和事件有些神秘,而当你理解他们之后,也觉得好像没有想象中的那么难。在项目中运用委托和事件,你会发现他非常棒,这篇博文算是自己对委托和事件的一次梳理和总结。

二、委托

C#中的委托,相当于C++中的指针函数,但委托是面向对象的,是安全的,是一个特殊的类,当然他也是引用类型,委托传递的是对方法的引用。

2.1、delegate

声明委托就必须使用关键字“delegate”,委托是先声明,后实例化。至少0个参数,至多32个参数

格式如下所示:

private delegate string GetAsString;

委托是一个类,所以他的实例化跟类的实例化一样,只是他总是接受一个将委托方法作为参数的构造函数。调用委托方法就有两种方式,如下所示:

int i = 10;

var method = new GetAsString(i.ToString);

//调用方法一

Console.WriteLine($" method方法{method}");

//调用方法二

Console.WriteLine($" method.Invoke方法{method.Invoke}");

运行结果:

2.2、Action

Action是无返回值的泛型委托,可以接受0个至16个传入参数

Action 表示无参,无返回值的委托

Action 表示有传入参数int,string无返回值的委托

前面我们【Log4Net 日志记录的实现】中,就使用了Action。如:

public static void Debug( string message, Action RegistedProperties)

{

RegistedProperties;

log.Debug(message);

}

调用方式为:

PFTLog.Debug(" 测试扩展字段", => {

LogicalThreadContext.Properties[" LogType"] = " 扩展

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值