문제

나는 발견했다 MSDN의 LINQ 샘플 내가 사용하려는 폴드 ()이라는 깔끔한 방법. Their example:

double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 }; 
double product = 
     doubles.Fold((runningProduct, nextFactor) => runningProduct * nextFactor); 

불행히도, 나는 그들의 예제 또는 내 코드에서 이것을 컴파일 할 수 없으며,이 방법을 언급하는 MSDN (열거 가능 또는 배열 확장 메소드)의 다른 곳에서는 찾을 수 없습니다. 내가 얻는 오류는 평범한 오래된 "그에 대해 아무것도 모른다"오류입니다.

error CS1061: 'System.Array' does not contain a definition for 'Fold' and no 
extension method 'Fold' accepting a first argument of type 'System.Array' could 
be found (are you missing a using directive or an assembly reference?)

LINQ (예 : Select () 및 Where ())에서 나온 다른 방법을 사용하고 있으며 "System.Linq를 사용하고 있습니다"라고 생각합니다.

이 방법은 실제로 C# 3.5에 존재합니까? 그렇다면 내가 무엇을 잘못하고 있습니까?

도움이 되었습니까?

해결책

당신은 사용하고 싶을 것입니다 Aggregate 확장 방법 :

double product = doubles.Aggregate(1.0, (prod, next) => prod * next);

보다 MSDN 자세한 내용은. a를 지정할 수 있습니다 seed 그런 다음 연속적인 값을 계산하는 표현식.

다른 팁

(일명 감소)는 기능 프로그래밍의 표준 용어입니다. 어떤 이유로 든 이름이 지정되었습니다 골재 LINQ에서.

double product = doubles.Aggregate(1.0, (runningProduct, nextFactor) => runningProduct* nextFactor);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top