C# Lambda表达式--记一次教训

我知道Lambda和deleget很像,之前虽然也偶尔写lambda表达式,但也并不是很在意。今天做了遇到的一个情况发现labmbda的方便之处。

关于Lambda网上有很多讲解,不过看明白,不代表就能想起用(主要是一直不太喜欢,加上之前项目上不让写lambda)

起因是这样子:

void SetAllChildImage()
{
    for (int i = 0; i < Heros.Count; i++)
    {
        var heroIcon = Heros[i].GetComponent();
        //虽然在资源在异步加载,但是lamdba会把用到变量保存起来,存储在方法栈上直到调用。
        //如果此时不用lambda,虽然也可以处理,但是回麻烦很多。
        GetSprit(spriteName , (sprite) => {
            heroIcon.sprite = sprite;
        });
    }
}


//这个方法主要是获取图集中的图片,不过此方法为异步的。即图集加载完成后,需要回调把图片传回来。
void GetSprit(string spriteName,Action callback )
{
    ...
} 

虽然被人教训了,但是有了教训就要记录下来,这样之后才(教)能(训)成(别)长(人)。

在获得临时变量并且需要做操作的时候,lambda真心蛮好用呢。

你可能感兴趣的:(C#)