Wie greifen Lambdas zu lokalen Variablen aus?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie greifen Lambdas zu lokalen Variablen aus?

Post by Anonymous »

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?

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());
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post