C#代理机制(4):Func

mac2025-06-04  25

Func是.NET类库从3.0开始新增的内置委托,用于实现返回类型为任何有返回类型的函数的调用。Func的参数列表的格式为传入类型参数列表+返回列表。举例来说,以下示例定义了一个Fun, IsAdult(int) 赋值后,再进行调用。

public override void Test() { // Predicate示例 Predicate<int> pred = Show; if(!pred(20)) { Console.WriteLine("未成年"); } // Func示例 Func<int, bool> func = Show; if(!pred(20)) { Console.WriteLine("未成年"); } } public void IsAdult(int age) { return age > 18; }

如上所示,使用Func可以代替Predicate类。唯一的区别在于,Func的参数列表中,最后多了一个表示返回类型。如func有两个参数,第一个表示传入参数为int型,第二个表示返回类型为bool型。

Func类

Func类可以表示任意有返回类型型的函数。

返回类型必需为bool,即逻辑判断型。参数列表类型不限制,长度最多为16。

以下是Predicate类 的定义原型。

public delegate void Func<T1>(T1 t1, Tr tr); public delegate void Func<T1, T2>(T1 t1, T2 t2, Tr tr); ... public delegate void Func<in T1,in T2,in T3,in T4,in T5,in T6,in T7,in T8,in T9,in T10,in T11,in T12,in T13,in T14,in T15,in T16>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15, T16 arg16, Tr tr);

小结

本文简单介绍了Predicate类,用于对返回类型为bool的函数进行委托调用。需要注意一点,使用Func可以代替Predicate类,但是代替不了Action类,因为返回类型为void的无法表示。

最新回复(0)