2015-07-20 102 views
5

我已經發現以下的一些例子中的代碼部分,同時學習Func鍵<>語法:Func鍵<>與lambda表達式

public static class Lambda 
    { 
     public static int MyFunc(Func<string, int> func) 
     { 
      //some logic 
      return 0; 
     } 
    } 

而樣品呼叫:

var getInt = Lambda.MyFunc((url) => { Console.WriteLine(url); return 0; } 

而我的問題:

爲什麼要傳遞上面的func作爲lambda表達式與此(url)是允許的,如果值從未分配(或可能是?)? 這樣傳遞Func有什麼意義?

編輯: 澄清我的問題。我只想知道這個示例調用 - 如果不能啓動該值,編譯器就不會禁止編譯器禁止像上面那樣將字符串作爲參數傳遞(使用lambda(url)=> {})。有沒有任何例子可以用於像上面那樣傳遞字符串?

+0

你寫它的方式,它不會做任何事情,除非你在y中調用func我們的'MyFunc'方法... –

+2

我想無論發生什麼//某些邏輯可能在這裏很重要 –

+1

Radek,請考慮編輯您的帖子以匹配Jon的答案,如果他回答了您正在尋找的內容。否則,在當前形式中,你的帖子是非常不清楚的,因爲如果完全不使用該值,那麼真的可以傳遞任何對象(包括空值)。 –

回答

10

url是用於lambda表達式的參數的名稱。這就像寫一個像這樣的方法:

public static int Foo(string url) 
{ 
    Console.WriteLine(url); 
    return 0; 
} 

然後從它創建一個委託:

Func<string, int> func = Foo; 

現在爲了呼叫委託,您需要提供一個字符串 - 這再成爲參數的值,就像如果你正常地調用方法一樣:

int result = func("some url"); 
相關問題