Func的介紹

常常看到  Func<int, bool>...這樣的寫法,看到這樣的就沒有心思看下去了。咱們學技術仍是須要靜下心來。spa

對Func<int,bool>的Func轉到定義看它的解釋:code

    // 摘要:
    //     封裝一個具備一個參數並返回 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
blog

1與4,2與3進行對比,你發現了什麼?!參數類型同樣對吧。         5string

Func是一個委託,委託裏面能夠存方法,那咱們就來建一個與之匹配的方法:
以Func<int,bool>爲例:
it

private bool IsNumberLessThen5(int number)io

{return number < 5;} class

Func<int,bool> f1 = IsNUmberLessThen5;方法

調用:
bool flag= f1(4);
技術

如下是具體代碼:static

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;
        }
    }
}
相關文章
相關標籤/搜索