2009-04-04 7 views
2

コールバックを作成する最も良い方法は何ですか? void(string、int)のsigを持つ関数を1つだけ呼び出す必要があります。私は処理する必要があるメンバーobjを持っているので、これはクラスを呼び出す必要があります。これを書いている最善の方法は何ですか? Cでは、funcポインタとvoid * objを渡します。私はそれを嫌い、私はCでこれを行うには良い方法があると思われる#?コールバックを作成する方法

+0

質問を書き直す必要があります。全く意味を持たず、文脈もない。 – Samuel

+0

あなたの質問はそれほど明確ではありません。何を呼び出すべきですか? – Samuel

答えて

5

C#でコールバックを処理する(または必要性を置き換える)標準的な方法は、代理人またはイベントを使用することです。 See this tutorial for details.

これはコールバックを処理するための非常にパワフルでクリーンな方法を提供します。

12

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" 
+1

なぜ誰かがこれを落としたのだろうか?コードが動作し、それは質問に答えるようです。 –

+1

私はそれを投票しました。 「力」は腐敗しています。 – SinisterRainbow

1

この意味は?

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... 
} 
関連する問題