c#常用委托
Action 委托
封装一个方法,该方法不具有参数且不返回值。
public delegate void Action();
注解
可以使用此委托将方法作为参数传递,而无需显式声明自定义委托。 封装的方法必须与此委托定义的方法签名相对应。 这意味着封装的方法必须没有参数,也没有返回值。 (C# 中,该方法必须返回 void
。 在 F# 中,函数或方法必须返回 unit
。 在Visual Basic中,它必须由 ... 定义Sub``End Sub
construct。 它也可以是返回忽略的值的方法。) 通常,此类方法用于执行操作。
备注
若要引用没有参数并返回值的方法,请改用泛型 Func<TResult> 委托。
Action委托有很多种类,总共16种,可以传入16个参数。
微软在文档上给了很详细的示例,从自己定义委托,到使用匿名方法,到使用Lambda,进化过程是完整的,可以仔细阅读学习。
参考资料:
https://docs.microsoft.com/zh-cn/dotnet/api/system.action?view=netframework-4.8
https://docs.microsoft.com/zh-cn/dotnet/api/system.action-2?view=netframework-4.8
Func<TResult> 委托
封装一个方法,该方法不具有参数,且返回由 TResult
参数指定的类型的值。
public delegate TResult Func<out TResult>();
注解
可以使用此委托来表示可以作为参数传递的方法,而无需显式声明自定义委托。 封装的方法必须与此委托定义的方法签名相对应。 这意味着封装的方法必须没有参数,并且必须返回值。
Func<T,TResult> 委托
封装一个方法,该方法具有一个参数,且返回由 TResult
参数指定的类型的值。
public delegate TResult Func<in T,out TResult>(T arg);
参考资料:
https://docs.microsoft.com/zh-cn/dotnet/api/system.func-1?view=netframework-4.8
https://docs.microsoft.com/zh-cn/dotnet/api/system.func-2?view=netframework-4.8
以上已经简单介绍了Action、Func<TResult>,这里只是列出有这两种常用的系统内置委托类型,具体使用和理解。请在参考资料中仔细阅读学习。