Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用我作为参数传递的函数_C#_Delegates - Fatal编程技术网

C# 调用我作为参数传递的函数

C# 调用我作为参数传递的函数,c#,delegates,C#,Delegates,我有一个功能: public void Callback() { // Does some stuff } 我想把它传给另一个函数,然后这个函数把它传给另一个函数,然后这个函数执行这个函数。。。到目前为止,我有: public void StartApp() // entry point { StartMyAwesomeAsyncPostRequest( Callback ); } public void StartMyAwesomeAsyncPostRequest( Del

我有一个功能:

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的背景,我正在努力解释,你能给我一个例子或者解释我的请求吗?提前谢谢

尝试将参数类型声明为特定类型的委托。在这种情况下,由于回调不接受任何参数,也不返回任何结果,因此请使用:

如果希望能够将参数传递给回调函数,请使用(或其多个近亲之一)传递多个参数:

public void StartMyAwesomeAsyncPostRequest(操作回调)
{
ActualAsyncPostRequest(回调);
}
public void TheActualAsyncPostRequest(操作回调)
{
回调(“Foo”);
}
或者,要从回调中获得结果,请使用a(或它的多个近亲之一)传入任何参数:

public void StartMyAwesomeAsyncPostRequest(Func回调)
{
ActualAsyncPostRequest(回调);
}
public void TheActualAsyncPostRequest(函数回调)
{
字符串结果=回调();
}

那么,您遇到了什么会产生意外结果的问题?我不确定你到底要求解决什么问题。除了你发布的代码没有本质上的“异步”之外,我不确定你在努力解决什么问题。你能解释一下吗?语法不对,它不起作用。我无法执行Callback(),它只是失败了。那么,我该如何调用我一直传递的函数呢?天哪,谢谢,它工作得更好:D允许我执行Callback(),现在我很高兴:)您的额外编辑刚刚回答了我的下一个问题,非常感谢!
public void StartMyAwesomeAsyncPostRequest(Action callback)
{
    TheActualAsyncPostRequest(callback);
}

public void TheActualAsyncPostRequest(Action callback)
{
    callback();
}
public void StartMyAwesomeAsyncPostRequest(Action<string> callback)
{
    TheActualAsyncPostRequest(callback);
}

public void TheActualAsyncPostRequest(Action<string> callback)
{
    callback("Foo");
}
public void StartMyAwesomeAsyncPostRequest(Func<string> callback)
{
    TheActualAsyncPostRequest(callback);
}

public void TheActualAsyncPostRequest(Func<string> callback)
{
    string result = callback();
}