2012-12-01 2 views
0

아래의 두 가지 방법의 차이점은 무엇입니까? 그들은 둘 다 똑같이 (내가 아는 한) 똑같이 반환합니다. 그래서 왜 다른 사람이 오히려 하나를 사용하게 될지 궁금합니다.Func <x,y>과 방법 (x, y)의 차이점은 무엇입니까?

다음 두 가지 방법 중 하나가 좋은 경우가 있습니까? 정상적인 방법보다 func<>을 사용하는 것이 더 나은 상황이 있습니까? (어떤 C++ 프로그래머가 강력한 형식의 함수 포인터를 호출 할 것이다) -

private static int addThings(int x, int y) 
{ 
    return x*y; 
} 

private static Func<int,int,int> addMoreThings = (x,y) => 
{ 
    return x*y; 
}; 
+0

하나는 방법이고, 다른 하나는 변수입니다. 큰 차이. –

답변

2

Func대표입니다.

Func<int,int,int>은 두 개의 정수를 취하고 정수를 반환하는 함수의 대리자를 의미합니다.

addThings의 경우 계산이 즉시 완료되고 결과가 반환됩니다.

addMoreThings의 경우 기능이 반환됩니다. 나중에 이 호출되어이 호출 될 수 있습니다.

위임 버전을 사용하면 게으르도록 할 수 있으므로 더 많은 컨텍스트없이 하나 이상의 다른 전략을 추천하는 것은 어렵습니다. 예를 들어 전략을 대리인에게 할당하는 등 전략 패턴을 사용할 수 있습니다.

+0

@Thousand - http://msdn.microsoft.com/en-us/library/bb534647.aspx – Oded

관련 문제