2016-11-14 63 views
0

我有一个类的属性返回一个函数。c#属性返回函数 - 从lambda获得值

public class Demo 
{ 
    public Func<string,int,bool> Something { get; set; } 
} 

如果我不喜欢这个

Demo demo = new Demo(); 

string target; 

demo.Something = (a,b)=> 
{ 
    //in here `a` contains a value. 
    //and I want to do: 
    target = a; 

    return true; 
}; 


//later in the code target is null 
//target here is null instead of having the value of `a` 

如何分配的价值为目标的拉姆达内变量后面的代码重用呢?

+0

你正确地做到了。但是,'Something'没有被调用。你只是简单地定义这个函数。之后编写'demo.Something(...)'将正确地分配'target' – Rob

+0

@Rob:你以后写demo.omething()是什么意思?实际上,当我调试它时,我可以看到'a'的值并被分配给目标变量。但是,委托结束后,目标为空。 – user2818430

+0

@ user2818430,请显示更多的代码。你省略了太多。特别是,显示调用'demo.Something'的行,以及您在哪里检查'target'的值。最好你的代码实际上应该是可运行的 - 即一个最小的独立可编译的例子。 –

回答

0
public static void Main(string[] args) 
{ 
    Demo demo = new Demo(); 

    string target; 

    demo.Something = (a, b) => 
    { 
     target = a; 
     return true; 
    }; 

    //Call something with params 
    demo.Something("foo", 1); 
}