के लिए इवेंट हैंडलर के लिए बेनामी विधि यह लूप के लिए किया जा सकता है?लूप
TickEventArgs targs1 = new TickEventArgs(lbl1_up_time, _elapsedTime_up1);
timer_up1.Tick += (sender, e) => Tick(targs1);
TickEventArgs targs2 = new TickEventArgs(lbl2_up_time, _elapsedTime_up2);
timer_up2.Tick += (sender, e) => Tick(targs2);
TickEventArgs targs3 = new TickEventArgs(lbl3_up_time, _elapsedTime_up3);
timer_up3.Tick += (sender, e) => Tick(targs3);
TickEventArgs targs4 = new TickEventArgs(lbl4_up_time, _elapsedTime_up4);
timer_up4.Tick += (sender, e) => Tick(targs4);
TickEventArgs targs5 = new TickEventArgs(lbl5_up_time, _elapsedTime_up5);
timer_up5.Tick += (sender, e) => Tick(targs5);
यह काम नहीं करता है क्योंकि मैं सीमा से बाहर है (5)
targs[0] = new TickEventArgs(lbl1_up_time, _elapsedTime_up1);
targs[1] = new TickEventArgs(lbl2_up_time, _elapsedTime_up2);
targs[2] = new TickEventArgs(lbl3_up_time, _elapsedTime_up3);
targs[3] = new TickEventArgs(lbl4_up_time, _elapsedTime_up4);
targs[4] = new TickEventArgs(lbl5_up_time, _elapsedTime_up5);
timers[0] = timer_up1;
timers[1] = timer_up2;
timers[2] = timer_up3;
timers[3] = timer_up4;
timers[4] = timer_up5;
int i = 0;
for (i = 0; i <= 4; i++)
{
timers[i].Tick += (sender, e) => Tick(targs[i]);
}
यह लैम्ब्डा अभिव्यक्ति से आ रही है; 'i' उन सभी के बीच साझा किया जाता है। जब तक कार्य निष्पादित किया जाता है तब तक उन्हें अनिवार्य रूप से 'टाइमर [i] कहा जाता है। टिक + = (प्रेषक, ई) => टिक (टैग्स [5]) '। एक स्थानीय 'int locali = i' घोषित करें और इसके बजाय अपनी लाइन में इसका उपयोग करें। –
@ChrisSinclair इसे उत्तर के रूप में पोस्ट करें। – I4V
[सी # कैप्चर वैरिएबल इन लूप] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/271440/c-sharp-captured-variable-in-loop) – nawfal