Func,Action的介紹及其用法

來源:互聯網
上載者:User

Func是一種委託,這是在3.5裡面新增的,2.0裡面我們使用委託是用Delegate,Func位於System.Core命名空間下,使用委託可以提升效率,例如在反射中使用就可以彌補反射所損失的效能。

Action<T>和Func<T,TResult>的功能是一樣的,只是Action<T>沒有傳回型別,

Func<T,T,Result>:有參數,有傳回型別

Action,則既沒有返回也沒有參數,

 

Func<T,TResult> 的表現形式分為以下幾種:

1。Func<TResult>

2。Func<T,TResult>

3。Func<T1,T2,TResult>

4。Func<T1,T2,T3,TResult>

5。Func<T1,T2,T3,T4,TResult>

分別說一下各個參數的意義,TResult表示 委託所傳回值 所代表的類型, T,T1,T2,T3,T4表示委託所調用的方法的參數類型,

以下是使用樣本:

Func<int, bool> myFunc = null;//全部變數                                
myFunc = x => CheckIsInt32(x); //給委託封裝方法的地方 使用了Lambda運算式
private bool CheckIsInt32(int pars)//被封裝的方法                       
{                                                                       
    return pars == 5;                                                   
}                                                                       
bool ok = myFunc(5);//調用委託 

 

MSDN:http://msdn.microsoft.com/zh-cn/library/bb534303(VS.95).aspx

 

但是如果我們需要所封裝的方法不傳回值,增麼辦呢?就使用Action!

可以使用 Action<T1, T2, T3, T4>委託以參數形式傳遞方法,而不用顯式聲明自訂的委託。封裝的方法必須與此委託定義的方法簽名相對應。也就是說,封裝的方法必須具有四個均通過值傳遞給它的參數,並且不能傳回值。(在 C# 中,該方法必須返回 void。在 Visual Basic 中,必須通過 SubEnd Sub 結構來定義它。)通常,這種方法用於執行某個操作。

使用方法和Func類似!

MSDN:http://msdn.microsoft.com/zh-cn/library/bb548654(VS.95).aspx

Action:既沒有返回,也沒有參數,使用方式如下:

Action action = null;//定義action                 
action =  CheckIsVoid;//封裝方法,只需要方法的名字
action();//調用

總結:使用Func<T,TResult>和Action<T>,Action而不使用Delegate其實都是為了簡化 代碼,使用更少的代碼達到相同的效果,不需要我們顯示的聲明一個委託,Func<T,TResult>的最後一個參數始終是傳回型別,而 Action<T,TResult>是沒有傳回型別的,而Action是沒有傳回型別和參數輸入的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.