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,但同时带有参数

理想情况下,我可以通过Add23,当使用NewLazy项时,调用Add(2,3)

我尝试了各种各样的想法,但我找不到让它发挥作用的方法。

C#将带有实参的方法作为参数传递给Lazy<;T>;

除非我误解了这个问题,否则最简单的方法就是将参数作为lambda表达式的闭包:

var x = 2;
var y = 3;
DoSomething(() => Add(x, y));