[英]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.