2009-04-04 5 views
2

콜백을 작성하는 가장 좋은 방법은 무엇입니까? void (string, int)의 sig가있는 함수 하나만 호출하면됩니다. 그리고 내가 처리해야하는 멤버 obj가 있기 때문에이 클래스를 호출해야합니다. 이것을 쓰는 가장 좋은 방법은 무엇입니까? C에서 나는 func 포인터와 void * obj를 전달할 것이다. 나는 그것을 싫어하고 나는 C#에서 이것을하는 더 좋은 방법이 있다고 의심한다.콜백은 어떻게 작성해야합니까?

+0

질문을 다시 작성해야합니다. 그것은 전체적으로 많은 의미를 가지지 않으며 문맥도 없습니다. – Samuel

+0

귀하의 질문은 아직 명확하지 않습니다. 무엇을 불러야 만할까요? – Samuel

답변

5

C#으로 콜백을 처리 (또는 필요성을 대체)의 표준 방법은 위임 또는 이벤트를 사용하는 것입니다 : 그것은 당신이 같은 일을 할 수 있습니다. See this tutorial for details.

이것은 매우 강력하고 깨끗한 콜백 처리 방법을 제공합니다.

12

C# 3.0에서는 콜백 (또는 위임) 서명을 무시할 수있는 람다 (lambda)를 도입했습니다.

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

나는 왜 누군가가 이것을 downvoted 궁금해! 코드가 작동하고 질문에 대답하는 것 같습니다. –

+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... 
} 
관련 문제