Wie greifen Lambdas zu lokalen Variablen aus?
Posted: 13 Feb 2025, 21:14
Mein Verständnis dafür, wie der Compiler mit Lambdas umgeht, ist begrenzt. >
Wenn dies der Fall ist, wie greift es dann zu lokalen Variablen?
Wenn dies der Fall ist, wie greift es dann zu lokalen Variablen?
Code: Select all
public async Task GetWebStuff()
{
dynamic ret = "";
WebClient wc = new WebClient();
wc.DownloadStringCompleted += async (s, a) =>
{
ret = await Newtonsoft.Json.JsonConvert.DeserializeObject(a.Result.ToString());
};
wc.DownloadString("http://www.MyJson.com");
return ret;
}
< /code>
Im obigen Beispiel wird der Rückgabewert von RET auf den Anrufer festgelegt, der ein dynamisches Objekt des Deserialisierten JSON ist. < /p>
Wie passiert das jedoch, wenn der Compiler das abgeschlossene Ereignis -Lambda in seine eigene Methode einnimmt? Woher weiß es, den Ret -Wert festzulegen? public async Task GetWebStuff()
{
dynamic ret = "";
WebClient wc = new WebClient();
wc.DownloadStringCompleted += wc_DownloadStringCompleted;
wc.DownloadString("google.com");
return ret;
}
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
ret = await Newtonsoft.Json.JsonConvert.DeserializeObject(e.Result.ToString());
}