2016-01-04 68 views
1

我有這樣的代碼:lambda表達式功能

int pictureId=10; 
string cacheKey = string.Format(ModelCacheEventConsumer.PICTURE_URL_MODEL_KEY, pictureId); 
     return _cacheManager.Get(cacheKey,() => 
     { 
      var url = _pictureService.GetPictureUrl(pictureId, showDefaultPicture: false); 
      //little hack here. nulls aren't cacheable so set it to "" 
      if (url == null) 
       url = ""; 

      return url; 
     }); 

究竟這部分代碼的意思是:」

() => 
{" 
    var url =...." 

這是否意味着函數返回地址,是爲每一行的執行?緩存什麼,然後返回一個類型 - ?列表此語法的文檔

URL

+0

_cacheManager是什麼類型? –

+0

_cacheManager實現ICacheManager IDisposable接口,該接口的方法定義如下: T獲取(string key); – Simon

回答

1

這部分代碼究竟意味着什麼

它只是通過參數傳遞方法。

這是否意味着對緩存中的每一行都執行返回URL的函數?

只有對象_cacheManager的方法Get的內容可以回答這個問題。

那麼什麼是返回類型 - 列表?

的返回類型爲字符串,因爲你的變量url是一個字符串。

+0

對不起,我的意思是什麼類型是從Get方法返回的變量,如字符串或字符串數​​組列表.. – Simon

+1

@Simon它唯一可能的回答它在方法內部尋找獲取或傳遞鼠標方法(如果你使用Visual Studio)。返回類型將會顯示給你 – fabriciorissetto

1

什麼的代碼究竟這部分的意思是:

好,lambda表達式是一條「捷徑」的委託,和委託是一個回調函數的引用(在一個非常簡單的解釋)。所以這是一個將你的緩存管理器,它希望有一個Func委託作爲第二PARAM的Get方法中調用的函數

這是否意味着函數返回地址,是從每一行執行緩存?

我認爲這將用於執行具有鍵值一樣cacheKey變量的值排。所以,只有一次(如果鍵是唯一的)

又是什麼返回類型 - 列表?

返回類型是字符串,因爲如果GetPictureUrl的結果爲null,它將返回空字符串。並且調用此方法期望在結果中也有一個字符串