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"] = " 扩展

你可能感兴趣的:(c#,带返回值的action)