我很确定这是可能的(至少在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*/);
}
答案 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);
}