본문 바로가기

프로그래밍 언어 노트/C#

[C#] LINQ는 Lazy 하다.

제목 그대로 LINQ는 lazy 하다.

 

LINQ는 쿼리를 반환할뿐 실 사용할때 평가된다.

 

LINQ 공식 페이지중

뭐 아무튼 그렇기때문에 Lazy 한 시퀀스를 다루는것처럼 주의 해야한다.

예전에 블로깅한 https://see-ro-e.tistory.com/222?category=849800

 

Lazy 한 시퀀스에서의 부수효과가 있는 함수 사용시 주의

포커 게임을 제작하다가 다음과 같은 코드를 사용했다. let Random = System.Random() type Suit = Spade | Dia | Heart | Club type Card = {suit:Suit; number:int} type Concentration = Card * bool * int let..

see-ro-e.tistory.com

와 같은 현상이 발생할수있다.

특히 LINQ는 안에서 람다를 자주쓰는데 람다함수가 부수효과를 가진경우 골치아퍼진다.

728x90