지연된 함수 란?
- 지연된 실행이란 LINQ의 특징 중 하나로 질의를 구축한 다음에 목록에 집어넣은 요소가 포함되어있는 것처럼 모든 표준 질의 연산자는 이러한 실행 지연 기능을 제공한다.
bool bCheck = false;
IEnumerable<Patent> patents8 = Datas.Patents.Where
(
patent =>
{
if(bCheck = patent.Title.StartsWith("B")) //우측의 결과를 좌측에 넣고 조건이 맞는지 확인한다.
{
print(patent.Title);
}
return bCheck;
}
); //람다 문 / out 키워드 사용은 불가능하다. / return 필수다. / 람다식과 다르게 지역변수를 가져다 쓸 수 있다.
print("End patents");
print(patents8);
- print(patent.Title);가 먼저 나오지 않고 print("End patents");가 먼저 나오는 것처럼 가져다 쓰는 시점에서 실행되는 순서다.
- 먼저 나오게하려면 print(patents8);을 먼저 쓰고 print("End patents");를 써야한다.
지연된 함수 특징
- 지연 실행을 사용하여 쿼리의 실행 시점을 최적화한다.
- 복잡한 쿼리나 대규모 데이터에 대한 쿼리는 성능에 영향을 줄 수 있으므로, 성능을 고려하여 쿼리를 작성해야 한다.
- 모든 표준 질의 연산자가 실행 지연 기능을 제공하지만 ‘예외’가 있다.
- 하나의 요소나 스칼라값을 돌려주는 집계 연산자(First 나 Count 등)
- 형식 변환 연산자 들 : ToArray, ToList, ToDictionary, ToLookup
- 이런 연산자들이 포함된 질의는 구축 즉시 실행되기 때문에 연산자의 결과 형식에는 실행 지연 기능을 제공하는 메커니즘이 없다.