我想要一个返回lambda来设置给定变量的扩展方法。我有点懒惰,但是这会很清楚我的代码。
关于为什么以下代码不起作用的任何想法?我得到浮动我的消息,因为它是由lambda设置的,所以我不想使用它,但我希望它捕获float并返回一个lambda来设置它。
public static Action<float> setter(this float me)
{
return x => me = x;
}
你的代码不起作用,因为它修改了lambda中的局部变量 - float是值类型。
static void Main(string[] args)
{
float f = 1;
f.setter()(4);
Console.WriteLine(f); // prints 1
}
你需要ref扩展方法:https://github.com/dotnet/roslyn/issues/165(C#7.2):
public static Action<float> setter(ref this float me)
{
return x => me = x;
}