簡體   English   中英

將lambda表達式作為參數傳遞,然后使用參數執行該lambda

[英]Pass a lambda expression as a parameter, then execute that lambda with a parameter

說我有以下(不正確的)代碼;

public void Foo()
{
    bool retVal = Bar(x => x.Any(y => y.Contains(z)); // Where z is "my variable" (below)
}

public bool Bar(Func<List<MyObject>, bool> pFunc)
{
    return pFunc("a variable");
}

如何傳遞在調用Bar中編寫的lambda表達式,以便在Bar中執行,使用僅存在於Bar()中的附加變量?

代碼不必保持這么簡單。

你可以在lambda中有兩個輸入:(x,z)

public void Foo()
{
    bool retVal = Bar((x,z) => x.Any(y => y.Contains(z))); // Where z is "my variable" (below)
}

public bool Bar(List<MyObject> list, Func<List<MyObject>, string, bool> pFunc)
{
    return pFunc(list, "a variable");
}

這意味着您必須將Func簽名更新為Func<List<MyObject>, string, bool>以及反映(x,z)=>bool

我還更新了Bar簽名以提供輸入列表,因為它丟失了。 也許它是一個局部變量或類成員。 無論如何,你應該能夠從這里開始調整你的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM