func 委託
封裝乙個具有兩個引數並返回 tresult 引數指定的型別值的方法。
語法
public
delegate tresult func<
in t1,
in t2,
out tresult>
(t1 arg1,
t2 arg2)
型別引數
in t1
此委託封裝的方法的第乙個引數型別。
該型別引數是逆變。即可以使用指定的型別或派生程度更低的型別。有關協變和逆變的更多資訊,請參見泛型中的協變和逆變。
in t2
此委託封裝的方法的第二個引數型別。
out tresult
此委託封裝的方法的返回值型別。
該型別引數是協變。即可以使用指定的型別或派生程度更高的型別。有關協變和逆變的更多資訊,請參見泛型中的協變和逆變。 引數
arg1型別:t1
此委託封裝的方法的第乙個引數。
arg2型別:t2
此委託封裝的方法的第二個引數。
返回值型別:tresult
此委託封裝的方法的返回值。
備註
可以使用此委託表示一種能以引數形式傳遞的方法,而不用顯式宣告自定義委託。
封裝的方法必須與此委託定義的方法簽名相對應。
也就是說,封裝的方法必須具有兩個均通過值傳遞給它的引數,並且必須返回值。
若要引用具有兩個引數並返回 void 的方法(或者要在 visual basic 中引用被宣告為 sub 而不是被宣告為 function 的方法),請改用泛型 action委託。
在使用 func
委託時,不必顯式定義乙個封裝具有兩個引數的方法的委託。
例如,以下**顯式宣告了乙個名為 extractmethod 的委託,並將對 extractwords 方法的引用分配給其委託例項。
示例
下面的示例演示如何宣告和使用 func
委託。此示例宣告乙個 func
變數,並將其分配給乙個採用 string 值和 int32 值作為引數的 lambda 表示式。
如果 string 引數的長度等於 int32 引數的值,則此 lambda 表示式將返回 true。
隨後在查詢中使用封裝此方法的委託來篩選字串陣列中的字串。
using
system;
using
system.collections.generic;
using
system.linq;
public
class
func3example
;ienumerable
awords = words.where(predicate).select(str =>
str);
foreach (string word
inawords)
console.writeline(word);}}
了解完這些以後,我們來看看它的應用。
不知道童鞋們有沒有遇到這樣的問題,在讀取資料訪問層中資料集合時,發現該方法需要返回的結果中包括物件及其外來鍵物件時,又不想新增乙個實體類來封裝它,那麼有什麼別的好辦法嗎?也許您會選擇用動態物件(dynamic關鍵字),不錯,這個這確實可以解決這個問題,但是有乙個弊端,且不論動態物件在執行時編譯,在編寫程式時,它存在乙個很不方便的體驗,它不能點(.)出它的屬性,不免產生意外的拼寫錯誤或是尋找-複製-黏貼的麻煩。
那麼怎麼辦呢?我們可以利用func 委託來幫助我們實現。
public ienumerablegetalluser(funcitemfactory)
;ilist
resultitems =
new list();
foreach (
var item
inresults.tolist())
return
resultitems;
}var query = userdao.getalluser((u, p) => ;
});此外,當然也可以自定義更多的委託,這裡筆者就不詳細介紹了,讀者可自行嘗試。
哈哈,這樣是否有幫到您呢?本人文筆粗糙簡陋,請多多大蝦們指教!
C 委託 使用匿名方法
使用c 委託還有另一種重要方法 通過匿名方法。其中,匿名方法是用作委託引數的乙個 塊。請看下面的例子 匿名方法的作用是使 更簡化,方便了程式設計師。如果沒有匿名方法,則定義一套事件監聽需要這樣 class program 一般來說,定義的myeventhandler方法只用來響應事件,只在上面那一處...
C 委託 使用匿名方法
使用c 委託還有另一種重要方法 通過匿名方法。其中,匿名方法是用作委託引數的乙個 塊。請看下面的例子 匿名方法的作用是使 更簡化,方便了程式設計師。如果沒有匿名方法,則定義一套事件監聽需要這樣 class program 一般來說,定義的myeventhandler方法只用來響應事件,只在上面那一處...
謹慎使用匿名物件
有時為了 簡潔我們會選擇使用匿名物件,但是它的生命週期是需要注意的,那就是當前執行語句分號結束後立即釋放!不是等到函式執行結束。比如有乙個工具函式 std string 獲取當前程序所在目錄 後續有幾處需要傳入 const char 型引數,為了 簡潔,我這樣寫 const char config ...