2

コールバックを記述する最良の方法は何ですか? void (string, int); の sig を持つ 1 つの関数を呼び出すだけで済みます。処理する必要があるメンバー obj があるため、これはクラスを呼び出す必要があります。これを書く最良の方法は何ですか?C では、func ポインターと void*obj を渡します。私はそれが嫌いで、C#でこれを行うためのより良い方法があると思いますか?

4

3 に答える 3

17

C#3.0 では、コールバック (またはデリゲート) シグネチャの宣言を省略できるラムダが導入されました。次のようなことができます。

static void GiveMeTheDate(Action<int, string> action)
{
  var now = DateTime.Now;
  action(now.Day, now.ToString("MMMM"));
}

GiveMeTheDate((day, month) => Console.WriteLine("Day: {0}, Month: {1}", day, month));
// prints "Day: 3, Month: April"
于 2009-04-04T01:32:31.670 に答える
5

C# でコールバックを処理する (またはその必要性を置き換える) 標準的な方法は、デリゲートまたはイベントを使用することです。 詳細については、このチュートリアルを参照してください。

これにより、コールバックを処理するための非常に強力でクリーンな方法が提供されます。

于 2009-04-04T01:32:35.523 に答える
2

これはあなたが意味するものですか?

thatfunc(params, it, wants, Func<myObject> myCallbackFunc)
{
    myObject obj = new Object(); 

    myCallbackFunc.Invoke(obj);

//or

    myCallbackFunc.Invoke(this);

//I wasn't sure what if myObject contained thatFunc or not...
}
于 2009-04-04T01:34:01.607 に答える