메서드에 Lambda 표현식이 있는데 편집하고 디버깅을 계속할 수 없는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1300133

문제

Linq 쿼리 구문이 Lambda로 컴파일된다는 다른 질문을 본 적이 있습니다.

그렇다면 쿼리 표기법으로는 가능하지만 메서드에 Lambda 표현식이 있을 때 편집하고 계속하기를 수행할 수 없는 이유는 무엇일까요?

가장 화가 나고 쿼리 표기법 사용으로 전환을 고려하게 만드는 것은 무엇입니까? 어디에나, 코드가 Lambda에 없지만 동일한 메서드의 다른 곳에 Lambda가 있더라도 편집하고 계속할 수 없다는 것입니다!그것은 부주의한 개발자들에게 가해지는 쓸데없는 고통과 같습니다!

도움이 되었습니까?

해결책

편집 및 계속은 메소드 구현을 "라이브"로 변경할 수 있지만 유형의 필드는 아닙니다.

Lambda 표현식 (및 익명 방법)은 변수를 캡처 할 때 자신의 개인 유형을 만들 수 있습니다. Lambda 표현식을 변경하면 관련된 유형이 변경되어 편집을 중단하고 계속할 수 있습니다.

그것처럼 들린다 ~해야 한다 이 영향을 미치지 않는 코드를 변경할 수는 있지만 완전히 방지하는 것이 더 쉽다고 생각합니다. 시작 변경을 한 다음 변화를 통해 절반을 방지한다는 것을 알게됩니다.

(개인적으로 나는 처음에 E & C의 팬이 아니므로 눈치 채지 못했습니다.)

다른 팁

확실히는 모르겠지만 클래스에 포함된 지역 변수가 있을 때 무엇을 변경해야 하는지 파악하는 것이 복잡할 것 같습니다.나는 어떤 변경이 안전할지, 어떤 변경이 안전하지 않을지 파악하는 것이 이 시점에서 바로잡기에는 복잡하고 오류가 발생하기 쉬운 것으로 간주되었다고 추측합니다.2010년의 도구는 스레딩과 새로운 UI에 중점을 두었습니다. 아마도 다음 버전에서 이를 얻을 수 있을 것입니다.

확실히 알지 못하지만 컴파일러가 클로저를 형성하는 람다 표현식을 컴파일러 생성 클래스로 변환하는 방식과 관련이 있다고 가정합니다. 아마도 컴파일 된 코드에 변경 사항을 적용하고 현재 상태를 보존하는 (쉬운) 방법이 없을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top