C#beginner - 在同一个函数中回调

时间:2017-10-17 17:29:50

标签: c#

我很确定这是可能的(至少在java中是这样)而且我是C#初学者。

所以我有一个包含回调的函数(通知其他方法完成了一些工作)。

我不想调用另一个函数,因为我在那里丢失了一个参数(并且不能在回调函数中传递参数)。我怎样才能在同一个功能中做所有事情?

我现在在做什么:

public static Tween Play(Tween tweenToPlay) 
{
    return tweenToPlay.Play().OnComplete(RewindCallback);

}

private static void RewindCallback() 
{
    // Execute some code after Tween is completed
}

我真正想要的是什么:

public static Tween Play(Tween tweenToPlay) 
{
    return tweenToPlay.Play().OnComplete(/*Create a function that will execute here*/);
}

3 个答案:

答案 0 :(得分:14)

你是说像这样的lambda表达式吗?

public static Tween Play(Tween tweenToPlay) 
{
    return tweenToPlay
        .Play()
        .OnComplete(() => {
            //  Do stuff
        });
}

答案 1 :(得分:12)

你只想要一个匿名方法?

public static Tween Play(Tween tweenToPlay) 
{
    return tweenToPlay.Play().OnComplete(() => 
    {
        //... your code
    });
}

答案 2 :(得分:3)

Anonymous / lambdas的编写速度较短,但根据复杂程度的不同,您可能需要使用完整的类,如下所示。

创建一个包含该变量字段和适当回调函数的类。

如果要订阅回调 - 使用该字段集创建该类的实例,并将回调设置为该实例中的回调。

示例:

class Temp
{
    public Tween Tween1;

    public void RewindCallback()
    {
        // Execute some code after Tween is completed
    }
}

用法:

Temp temp;
public Tween Play(Tween tweenToPlay)
{
    temp = new Temp { Tween1 = tweenToPlay };
    return tweenToPlay.Play().OnComplete(temp.RewindCallback);
}