C# Func的介绍

来源:互联网 发布:连通区域图像分割算法 编辑:程序博客网 时间:2024/06/04 19:48

原文:http://www.cnblogs.com/pnljs/p/3792407.html

对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;        }    }}


0 0
原创粉丝点击