C# Func的用法

原创 2016年08月31日 16:42:14

C#中Fun和前面介绍过的Action有点类似,都是一个委托方法

不同的是Func是有返回值的,而Action没有

Fun常用有两个参数,前面的是输入参数,后面的是输出参数(意味着是在另一部分运算中产生的)恰恰是整个方法的返回值

(T arg)代表的是和输出参数类型相同的方法名称(返回值的类型和Func输出参数类型相同)

Fnc最多有16个输入参数,有且只有一个输出参数

Func<TResult> function代表function函数的返回值得类型是TResult。


//
    // 摘要:
    //     Encapsulates a method that has one parameter and returns a value of the type
    //     specified by the TResult parameter.To browse the .NET Framework source code for
    //     this type, see the Reference Source.
    //
    // 参数:
    //   arg:
    //     The parameter of the method that this delegate encapsulates.
    //
    // 类型参数:
    //   T:
    //     The type of the parameter of the method that this delegate encapsulates.This
    //     type parameter is contravariant. That is, you can use either the type you specified
    //     or any type that is less derived. For more information about covariance and contravariance,
    //     see Covariance and Contravariance in Generics.
    //
    //   TResult:
    //     The type of the return value of the method that this delegate encapsulates.This
    //     type parameter is covariant. That is, you can use either the type you specified
    //     or any type that is more derived. For more information about covariance and contravariance,
    //     see Covariance and Contravariance in Generics.
    //
    // 返回结果:
    //     The return value of the method that this delegate encapsulates.
    [TypeForwardedFrom("System.Core, Version=3.5.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089")]
    public delegate TResult Func<in T, out TResult>(T arg);


         public void Test()
        {
            //1.
            Func<string, int> func1 = MyMethodA;
            Console.WriteLine(func1("feige"));

            //2.
            MyMethodB<string>(new Func<string, int>(MyMethodA), "feige");

            //3
            MyMethodB(new Func<string, int>(MyMethodA), "feige");
        }

        public int MyMethodA(string str)
        {
            if (string.IsNullOrEmpty(str))
                return 0;
            return 1;
        }

        public void MyMethodB<T>(Func<T, int> func, T t)
        {
            Console.WriteLine(func(t));
        }




版权声明:本文为博主原创文章,未经博主允许不得转载,如果转载请写明出处。

相关文章推荐

C# 重构之四(提取接口重构)

提取接口”是一项重构操作,提供了一种使用来自现有类、结构或接口的成员创建新接口的简单方法。 当几个客户端使用类、结构或接口中成员的同一子集时,或者当多个类、结构或接口具有通用的成员子集时,在接口...

C# Action委托方法

第一次看到Action感觉很迷茫,它是干什么的,原来是个委托方法,这样就好理解了 看源码的声明 // // 摘要: // 封装一个方法,该方法只有一个参数并且不返回值。...

C# 重构之三(封装字段重构)

“封装字段”重构操作能够从现有字段中快速创建属性,然后通过对新属性的引用无缝更新代码。 当某个字段是 public 时,其他对象可以直接访问该字段并可对其进行修改,而拥有该字段的对象不会检测到。...

C# 重构之六(重新排列参数重构)

Reorder Parameters是一项 Visual C# 重构操作,提供了一种对方法、索引器和委托的参数顺序进行更改的简单方法。 Reorder Parameters会更改声明,并在调用该成员的...

关于c#中的Func<>和Action<>

Func其实本人自己基本上也没怎么用过,之所以会写出来主要是因为在一本书的示例代码中看到了这两个东西的使用,发现其实还是挺好用的,所以就写下来,有需要的阿猿们可以参考一下。 首先说一下,个人感觉就是...

C# 重构之五(移除参数重构)

移除参数重构 (C#) Remove Parameters 是一项重构操作,提供了一种将形参从方法、索引器或委托中移除的简单方法。 “移除参数”会更改声明;并在调用该成员的所有位置移除形...

C# 重构之二(重命名重构)

“重命名”是 Visual Studio 集成开发环境 (IDE) 中的一项重构功能,为重命名代码符号(如字段、局部变量、方法、命名空间、属性和类型)的标识符提供了一种简单的方法。   “重命名”功能...

C#中 Action<T>和Func<T>的用法

本文主要介绍了.net中两个内置的泛型委托类Action和Func,并通过具体的实例对其进行了介绍!

C#基础——Func和Action的介绍及其用法

Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中使用就可以弥补反射所损失的性能。...

C# var和dynamic的用法和理解

var和dynamic的本质区别是类型判断的时间不同,前者是编译时,后者是运行时。 1.var在声明变量方面简化语法(只能是局部变量),在编译时交给编译器推断。 2.dynamic也是为简化语法而生的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)