zoukankan      html  css  js  c++  java
  • Func的介绍

    经常看到  Func<int, bool>...这样的写法,看到这样的就没有心思看下去了。我们学技术还是需要静下心来。

    对Func<int,bool>的Func转到定义看它的解释:

        // 摘要:
        //     封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。
        //
        // 参数:
        //   arg:
        //     此委托封装的方法的参数。
        //
        // 类型参数:
        //   T:
        //     此委托封装的方法的参数类型。
        //
        //   TResult:
        //     此委托封装的方法的返回值类型。
        //
        // 返回结果:
        //     此委托封装的方法的返回值。
        [TypeForwardedFrom("System.Core, Version=3.5.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089")]
        public delegate TResult Func<in T, out TResult>(T arg);

    in T 代表输入参数                     1
    out TResult 表示输出参数          2
    再看返回值是 TResult                3
    构造方法需要的参数是T               4

    1与4,2与3进行对比,你发现了什么?!参数类型一样对吧。         5

    Func是一个委托,委托里面可以存方法,那我们就来建一个与之匹配的方法:
    以Func<int,bool>为例:

    private bool IsNumberLessThen5(int number)

    {return number < 5;} 

    Func<int,bool> f1 = IsNUmberLessThen5;

    调用:
    bool flag= f1(4);

    以下是具体代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Linq.Expressions;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Func<int, bool> f1 = IsNumberLessThen5;
                bool flag = f1(4);
                Console.WriteLine(flag);
    
                //以下是其它的用法,与IsNumberLessThen5作用相同。只是写法不同而已。
                Func<int, bool> f2 = i => i < 5;
                Func<int, bool> f3 = (i) => { return i < 5; };
                Func<int, bool> f4 = delegate(int i) { return i < 5; };
                flag = f2(4); Console.WriteLine(flag);
                flag = f3(4); Console.WriteLine(flag);
                flag = f4(4); Console.WriteLine(flag);            
    
                Console.ReadLine();
            }
    
            private static bool IsNumberLessThen5(int number)
            {
                if (number < 5)
                    return true;
                return false;
            }
        }
    }
  • 相关阅读:
    spring requestbody json
    idea 配置自动编译 livereload
    idea hibernate console 执行hql报错
    查找最小的破坏连续性的数字
    xcopy忽略文件 7zip打包
    window 批处理脚本获取上级目录
    substring c# js java
    R语言中使用多重聚合预测算法(MAPA)进行时间序列分析
    R语言使用最优聚类簇数k-medoids聚类进行客户细分
    R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化
  • 原文地址:https://www.cnblogs.com/superfeeling/p/4811692.html
Copyright © 2011-2022 走看看