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