Func Action 的區別於說明

2021-08-29 15:49:22 字數 2280 閱讀 2146

一、func

func是乙個.net內建的委託。

func,func是乙個.net內建的泛型委託。

func

func

func

func

func

它有5種形式,只是引數個數不同;第乙個是無引數,但是有返回值;

下面是乙個簡單的普通委託來傳方法的示例。

private delegate string say();

public static string sayhello()

static void main(string args)

所以,在有時候,我們不知道乙個介面同時要做什麼操作的時候,我可以給它留乙個委託。

為了更方便,.net直接預設有了委託。我們再來試試.net預設帶的委託。

public static string sayhello()

static void main(string args)

如果需要引數的,還可以這樣傳乙份。

public static string sayhello(string str)

static void main(string args)

二、action

action的用法與func幾乎一樣,呼叫方法也類似。

action

action

action

action

action

private delegate string say();

public static void sayhello(string str)

static void main(string args)

三、func與action的區別

func與action作用幾乎一樣。只是

func有返回型別;

action只有引數型別,不能傳返回型別。所以action的委託函式都是沒有返回值的。

四、func與action都支援lambda的形式呼叫

還是以乙個輸入後,返回重複一次的值作為示例。

funcsay = m => m + m;

console.writeline(say("abc"));    //輸出abcabc

五、最常見到func的地方

通常我們最常見到func是在方法的引數裡如下面這樣:

string ***(func)
咱們來看看linq裡面的其中乙個sum:

public static int sum(this ienumerablesource,
funcselector);

裡面看到兩點:

1、擴充套件方法,與這篇文章無關(擴充套件的是ienumerable,主要是為了能夠實現ienumerable介面的集合.出函式)。

2、funcselector這個引數。

嘗試寫乙個linq的first函式吧,命名為first2。linq源**裡有很多異常情況處理,好多設計模式,可惜我不懂,只提取簡單邏輯了。

}throw new exception("不存在滿足條件的第乙個元素!");}}

class program

;int k = listint.first2(m => m > 4); //輸出5

console.writeline(k);

console.readkey();

}}}

lambda式

a:沒有任何引數

public static void noparam()

;console.writeline("我沒有引數 返回值:",dellambda());

}

b:有引數

public static void twoparam()

;console.writeline("*=",10,2,dellambdatwo(10,2));

}

c:幾種常用的委託實現

begininvoke(new system.action(() =>

{}))

begininvoke(new system.func(() =>

{}))

begininvoke(() =>

{})//action省略

Func,Action 的介紹及其用法

func是一種委託,這是在3.5裡面新增的,2.0裡面我們使用委託是用delegate,func位於system.core命名空間下,使用委託可以提公升效率,例如在反射中使用就可以彌補反射所損失的效能。action和func的功能是一樣的,只是action沒有返型別,func 有引數,有返回型別 a...

ISP於IAP的區別

isp 於iap 的區別 用lpc2000的iap,你自己分配好flash空間,指定乙個block用來存放你的資料,然後通過iap進行寫操作。每次開機後,從這個block讀你的資料。iap的實現 通常在使用者需要實現iap功能時,即使用者程式執行中作自身的更新操作,需要在設計韌體程式時編寫兩個專案 ...

於php版本差別處說程式設計

先說事件。以前的專案現在需要重新部署乙份,然而由於伺服器開發環境的差異,系統出現很多錯誤。第一是這種方式來建立陣列,出現問題,總是報 unexpected 第二是date it is not safe to rely on the system s timezone settings。其實這兩個問題...