2012-01-17 5 views
18

를 곤혹는 다음 코드 예제를 고려 코드 예제는 목록 TempList의 개체를 변경하지 않습니다.List.ForEach 나에게

이 게시물은 왜 더 이해할 수 있습니까? 또는 적어도 도움이되는 이유를 이해하십시오.

답변

40

Sub 대신 Function을 사용했기 때문입니다. Function이 값을 반환하기 때문에 컴파일러는 등호 (=)가 비교가 아닌 할당으로 간주됩니다. 당신이 SubFunction을 변경하는 경우, 컴파일러는 제대로 등호 과제로 서명 고려할 것 : 당신은 여러 람다이 있다면

TempList.ForEach(Sub(obj) obj.Deleted = True) 

;

TempList.ForEach(Function(obj) 
        obj.Deleted = True 
        Return True 
       End Function) 

물론,이 반환 값을 사용하지 않기 때문에 당신이 Sub를 사용한다, 그래서 아무 의미가하는 Function을 사용하지 할 수 foreach는 방법에 대해 :이 문제가 없었을 것입니다.

+0

이제 완벽하게 이해할 수 있습니다. 많은 감사드립니다. 나에게 여전히 완전히 새로운 것 :-) –

+0

처음에 나는 어떤 일이 일어 났는지 알지 못했다 .-) –

+0

나는이 물건이 얼마나 강력한 지에 놀랐다. 이것 또한 스스로 배우도록 강요했다. LINQ입니다. –