函式當引數傳遞有什麼用

2022-01-10 06:34:47 字數 1200 閱讀 9671

最近和一位同事說下linq,我提到linq裡很多方法表面來看是把原先不怎麼常用的一種技巧正式化了下,就是把函式當引數傳遞,同事有點不理解,或者這樣說,在工作中這有什麼用處.

我這裡給出二種簡單比較常用的用法.

1.填充多execl去重複**.

這裡想法比較簡單,也很容易想到,我有時匯出幾份execl時,那麼相應的就會有開啟execl,填充execl,關閉儲存execl這三步.

但是這幾份execl裡,開啟execl,關閉儲存execl是相同的.我們**工人都知道不要寫重複**.那麼好,封裝吧.........

但是關鍵是填充execl這步不一樣,怎麼做(不要告訴我用設計模式來封裝多種模式,然後用不同模式來填充啊.)很簡單,

因為填充execl不一樣,也就是說,要填充的execl**worksheet不一樣,在這裡就可以把函式當引數傳遞.

如下.publicstringonaction(paramsaction actions)

//關閉儲存execl

}2.asp.net寫的 泛型委託在專案中的應用.

這裡給我們展示了一種場景.

具體場景:在客戶端呼叫wcf服務時,我們都需要在客戶做異常處理,最常見的錯誤異常為communicationexception,timeoutexception,exception.

通常我們只能執行這個方法,然後捕獲異常.乙個二個方法沒什麼.如果到達10個會怎麼樣,還不說100的時候.你的專案裡就全是那些一模一樣的try{}catch{}.

幸好,作者給了我們一種處理方法.

把方法作為乙個物件來考慮,我只考慮方法執行的異常情況,你怎麼處理我不管.如下.

public

static

void

invoke

<

tcontract

>

(tcontract proxy, action

<

tcontract

>

action)

{try{

action(proxy));

catch()

catch()

這樣整個世界清靜了.

函式型別有什麼用?

函式型別通常用來宣告函式或者用來組成複雜的型別,例如 void foo c c 規定函式的返回值不能是函式型別或者陣列型別,只能用函式指標或者物件指標 來代替例如,有如下宣告 typedef int f void 這種型別的函式不帶引數,返回值是int。那麼可以這樣宣告f和g f f,g 相當於宣告...

建構函式有什麼用?

建構函式,分為有參和無參 public class student 有參 public student string name 為什麼要有建構函式?我先提一點。就是在我們沒建建構函式的時候,會呼叫系統預設的無參建構函式。建構函式的優點。1.減少 量。2。減少錯誤匹配,增加限制 分別說上面兩點 1.比...

glGetShaderiv()函式有什麼用?

部分內容 自 今天學learnopengl的時候看到了這個函式,因為最終的影象有誤,但是不知道具體 出錯,發現glgetshaderiv 函式可以用來檢測著色器編譯是否成功。名稱 glgetshaderiv 從著色器物件返回乙個引數 規範 void glgetshaderiv gluint shad...