浅析C#中的Func<>委托

Func<TResult>委托

封装一个不具有参数但是却返回TResult参数指定的类型值的方法。

语法:

public delegate TResult Func<out TResult>()

Func<T, TResult>委托

封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。

语法

public delegate TResult Func<in
T, out TResult>(

      T arg
)


Func<T1, T2, TResult>委托

封装一个具有两个参数并返回 TResult 参数指定的类型值的方法。

语法

public delegate TResult Func<in T1, in T2,out TResult>(
      T1 arg1,
      T2 arg2
)

若要引用不具有参数但却返回 void 的方法(或者在 Visual Basic 中,被声明为 Sub 而不是被声明为 Function 的方法),请改用 Action 委托。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 09:00:30

浅析C#中的Func<>委托的相关文章

C#中常见的委托(Func委托、Action委托、Predicate委托)

今天我要说的是C#中的三种委托方式:Func委托,Action委托,Predicate委托以及这三种委托的常见使用场景. Func,Action,Predicate全面解析 首先来说明Func委托,通过MSDN我们可以了解到,Func委托有如下的5种类型: (1) *delegate TResult Func<TResult>(); (2)*delegate TResult Func<T1,TResult>(T1 arg1); (3) *delegate TResult Func&

C#学习日记25---匿名方法 与 Func委托 与 lambda表达式

       在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法.C# 2.0 引入了匿名方法(委托),而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式. 匿名委托(方法): 匿名委托的叫法并不准确,准确的应该叫做匿名方法,(总之两者是一个意思啦).前面  委托类型  中我已经提到过,委托是用于引用与其具有相同标签的方法.换句话说,您可以使用委托对象调用可由委托引用的方法(参数是方法名).而匿名方法则是将代码块作为委托参数(参数是实

c#中的泛型委托(@WhiteTaken)

今天学习一下c#中的泛型委托. 1.一般的委托,delegate,可以又传入参数(<=32),声明的方法为  public delegate void SomethingDelegate(int a); 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace delegate

C# Func&lt;&gt;委托

以前我们为了能够调用一个方法,必须比照这个方法定义一个相应的delegate. 原先我们定义delegate // 委托声明 -- 定义一个签名: delegate doubleMathAction(double num); class DelegateTest { // 符合委托声明的常规方法 static double Double(double input) { return input * 2; } static void Main() { 原版: // 使用一个命名方法实例化委托类型

.NET : Func委托和Action委托

上一篇我们讲到了如何在ASP.NET页面中实现异步任务.我们来回顾一下里面一个特殊的类型:LongTimeTask public class LongTimeTask{    public string Result = string.Empty;    public HelloWorldHandler handler; public delegate string HelloWorldHandler();    public string HelloWorld()    {        Th

浅析JDK中ServiceLoader的源码

前提 紧接着上一篇<通过源码浅析JDK中的资源加载>,ServiceLoader是SPI(Service Provider Interface)中的服务类加载的核心类,也就是,这篇文章先介绍ServiceLoader的使用方式,再分析它的源码. ServiceLoader的使用 这里先列举一个经典的例子,MySQL的Java驱动就是通过ServiceLoader加载的,先引入mysql-connector-java的依赖: <dependency> <groupId>m

C#内置泛型委托:Func委托

1.什么是Func委托 Func委托代表有返回类型的委托 2.Func委托定义 查看Func的定义: using System.Runtime.CompilerServices; namespace System { // // 摘要: // 封装一个方法,该方法具有两个参数,并返回由 TResult 参数指定的类型的值. // // 参数: // arg1: // 此委托封装的方法的第一个参数. // // arg2: // 此委托封装的方法的第二个参数. // // 类型参数: // T1:

在Unity中使用事件/委托机制(event/delegate)进行GameObject之

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 一对多的观察者模式机制有什么缺点? 如果你对如何在Unity中使用事件/委托机制还不太了解,建议您查看我的前一篇文章:[Unity3D技巧]在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 在前一篇博客里面,我们写到

浅析python中_name_=&#39;_main_&#39;

刚接触到python时,对代码中的_name_='_main_'比较疑惑,本文对其的讲解借鉴了其他博客讲述(见参考资料),希望和大家共同学习. Make a script both importable and executable 首先先看一个例子 1 #module.py 2 def main(): 3 print "we are in %s"%__name__ 4 if __name__ == '__main__': 5 main() 在这段函数中,定义main函数,当py文件被