2

私は機能を持っています:

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 のバックグラウンドから来ているため、説明に苦労しています。私のリクエストに固有の例または説明を教えてもらえますか? 前もって感謝します!

4

1 に答える 1

7

パラメーターの型を特定の種類のデリゲートとして宣言してみてください。この場合、コールバックは引数を受け入れず、結果を返さないため、次を使用しますAction

public void StartMyAwesomeAsyncPostRequest(Action callback)
{
    TheActualAsyncPostRequest(callback);
}

public void TheActualAsyncPostRequest(Action callback)
{
    callback();
}

引数をコールバックに渡すことができるようにしたい場合は、Action<T>(またはその多くのいとこの 1 つを使用して、複数の引数を渡すことができます):

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

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

または、コールバックから結果を取得するには、Func<T>(またはその多くのいとこの 1 つを使用して、任意の引数を渡します):

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

public void TheActualAsyncPostRequest(Func<string> callback)
{
    string result = callback();
}
于 2013-09-18T22:21:24.440 に答える