C#将带有实参的方法作为参数传递给Lazy<;T>;
本文关键字:Lazy gt lt 参数传递 实参 方法 | 更新日期: 2023-09-27 18:00:00
让我们考虑一下这个代码:
public void DoSomething<T>(Func<T> MyFunc)
{
var NewLazyItem = new Lazy<T>(MyFunc);
// do stuff
// use the NewLazyItem
}
假设我有一个这样的方法:
public int Add(int a, int b) { return a + b; }
我想要实现的是能够将Add方法传递到DoSomething,但同时带有参数
理想情况下,我可以通过Add、2和3,当使用NewLazy项时,调用Add(2,3)。
我尝试了各种各样的想法,但我找不到让它发挥作用的方法。
除非我误解了这个问题,否则最简单的方法就是将参数作为lambda表达式的闭包:
var x = 2;
var y = 3;
DoSomething(() => Add(x, y));