我有一个功能:
public void Callback()
{
// Does some stuff
}
我想把它传递给另一个函数,然后将它传递给另一个函数,然后执行函数......到目前为止我有这个:
public void StartApp() // entry point
{
StartMyAwesomeAsyncPostRequest( Callback );
}
public void StartMyAwesomeAsyncPostRequest( Delegate callback )
{
// Work out some stuff and start a post request
TheActualAsyncPostRequest( callback );
}
public void TheActualAsyncPostRequest( Delegate callback )
{
// Do some jazz then run the delegated function
callback();
}
我查看了一些其他的例子,但是来自PHP和javascript背景,我正在努力解释,你能不能给我一个特定于我的请求的例子或解释?提前谢谢!
答案 0 :(得分:7)
尝试将参数类型声明为委托的特定种类。在这种情况下,由于您的回调不接受任何参数并且不返回任何结果,请使用Action
:
public void StartMyAwesomeAsyncPostRequest(Action callback)
{
TheActualAsyncPostRequest(callback);
}
public void TheActualAsyncPostRequest(Action callback)
{
callback();
}
如果您希望能够将参数传递给回调,请使用Action<T>
(或其众多堂兄之一,传递多个参数):
public void StartMyAwesomeAsyncPostRequest(Action<string> callback)
{
TheActualAsyncPostRequest(callback);
}
public void TheActualAsyncPostRequest(Action<string> callback)
{
callback("Foo");
}
或者要从回调中获得结果,请使用Func<T>
(或其众多堂兄之一,传入任何参数):
public void StartMyAwesomeAsyncPostRequest(Func<string> callback)
{
TheActualAsyncPostRequest(callback);
}
public void TheActualAsyncPostRequest(Func<string> callback)
{
string result = callback();
}