C

雅轩聊科技 2024-09-10 20:55:18

哈喽,你好啊,我是雷工!

在C#中可以使用系统泛型委托来处理不同类型参数的方法。

系统泛型委托是定义在System.Action和System.Func两个类型中的。

Func和Action大大简化了事件处理、回调机制以及高阶函数(例Lambda表达式、LINQ查询)的使用,提升了代码的可读性和可维护性。

两者的主要不同在于:

Action是一个无返回值的泛型委托,

Func是有返回值的泛型委托。

01 Func委托

Func委托用于那些具有返回值的方法。

Func可以有多个输入参数,但只能有一个返回值。

Func的返回值类型和其输入参数的类型都是泛型类型参数。

Func委托的基本形式:

Func<TResult>

Func<T1,TResult>

Func<T1,T2,TResult>

……

Func<T1,T2,...,Tn,TResult>

其中T1到Tn是输入参数的类型,可以包含0-16个参数,TResult是返回值的类型。

通过使用Func委托,开发者可以轻松地将方法作为参数进行传递、赋值给变量,或在需要时调用它。

02 Action委托

Action委托用于那些没有返回值的方法。

Action可以有多个输入参数,但本身不返回任何值。

Action委托的基本形式:

Action

Action<T1>

Action<T1,T2>

……

Action<T1,T2,... ,Tn>

其中T1到Tn是输入参数的类型,可以包含0-16个参数。

03 应用场景

①Action用于需要传递一个不返回任何值的方法给另一个方法时使用,在多线程中使用的比较多,如事件处理、遍历操作等。

②Func用于需要传递一个方法,并且这个方法应该返回一个结果时使用,在扩展方法中使用的非常多,如LINQ查询,函数式编程等。

04 优点

①提供了类型安全的方式来表示委托。

②减少了自定义委托类型的需求,使代码变得更简洁。

③与泛型和Lambda表达式结合使用,大大提高了代码的灵活性和可读性。

05 后记

虽然不使用Func和Action也能实现想要实现的功能,但是如果能够灵活正确的使用Func和Action泛型委托,有助于提升我们的代码质量,让我们写出更加优雅的、健壮的、可读性强、易于维护的代码。

我们应该致力于此,而不是堆砌低质量的代码,让后面接手的同学骂骂咧咧的在你的屎山上进行升级。

0 阅读:0

雅轩聊科技

简介:感谢大家的关注