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