C#匿名函数的坑

时间:2023-03-09 14:27:39
C#匿名函数的坑
  • 在for循环中catch索引
    for (int i = 0; i < n; i++)
{
foo(() =>{
if (i == x) //这里的i始终都是最后一个。。。
{
//balabala…
}
})
}
  • 不必要的“优化”

这里的优化是指业务代码上的,比如

public void foo(func onquery)
{
if (mydelegate == null)
{
mydelegate = onquery;
}
//balabala
}

如果传递的onquery参数中有catch其他类的成员变量就sb了。比如在u3d中

catch了一个gameobject,然后切换了场景,再回到前一个场景的时候,如果foo重入

那么mydelegate将不会更新,导致调用mydelegate的时候仍然使用老的gameobject,于是sb掉

因此这里完全没必要判断是否为null