我一直在看这段代码。我意识到这总是抛出 notsupportedexception 的原因是因为 temp 总是等于 20;但是,我希望有人向我解释为什么 temp 总是等于 20 而不是在循环中设置为 temp 的值。
{
delegate int Del(int i);
static event Del MyEvent;
static void Main(string[] args)
{
for (int i = 0; i < 20; i++)
MyEvent += a =>
{
int temp = i;
if (a != temp) throw new NotSupportedException();
return a * 2;
};
Console.WriteLine("C'est fini");
Console.WriteLine(GetValue(5));
Console.ReadLine();
}
static int GetValue(int arg)
{
foreach(Del myEvent in MyEvent.GetInvocationList())
{
try
{
return myEvent(arg);
}
catch(NotSupportedException)
{
continue;
}
}
throw new NotSupportedException();
}
}
我是一名优秀的程序员,十分优秀!