2016-11-14 4 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.Something() afterwards? Фактически, когда я его отлаживаю, я вижу значение '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); 
}