반응형
람다 식의 열거 형은 다르게 컴파일됩니다. 과부하 해결 개선의 결과?
Visual Studio 2015 RC를 시도하는 동안 이전 작업 코드에서 런타임 오류가 발생했습니다. (x => x.CustomerStatusID == CustomerStatuses.Active)
함수에으로 전달 된 람다 가 주어지면 Expression<>
디버거는 표현식 트리에서 차이를 보여줍니다. 이전에는 다음과 같이 컴파일되었습니다.
.Lambda #Lambda1<System.Func`2[Services.DataClasses.CustomerDC,System.Boolean]>(Services.DataClasses.CustomerDC $x)
{
(System.Int32)$x.CustomerStatusID == 0
}
그러나 C # 6.0에서는 이제 다음과 같이 컴파일됩니다.
.Lambda #Lambda1<System.Func`2[Services.DataClasses.CustomerDC,System.Boolean]>(Services.DataClasses.CustomerDC $x)
{
(System.Int32)$x.CustomerStatusID == (System.Int32).Constant<Services.DataClasses.CustomerStatuses>(Active)
}
내 트리 순회 코드에 대한 수정이 간단하고 추가 세부 사항이 감사하지만 이와 같이 떠 다니는 다른 문제를 아는 사람이 있습니까?
또는 과부하 해결이 어떻게 개선되었는지에 대한 정보에 대한 링크가있는 사람이 있습니까? 나는 아무것도 찾을 수 없습니다.
이것은 과부하 해결과 관련이 없습니다. 이전 컴파일러는 비교의 오른쪽을 조기에 최적화하여 소스 표현식에 해당하는 코드를 생략했습니다.
반응형
'program tip' 카테고리의 다른 글
정말 '최종'블록이 필요합니까? (0) | 2020.11.10 |
---|---|
이전에 추정 된 값으로 혼합 효과 모델 추정을 다시 시작합니다. (0) | 2020.11.09 |
Castle DynamicProxy-GTR로 사용되는 GTP와 관련된 프록시를 만들 때 실패 (0) | 2020.11.09 |
Parcelable 인터페이스의 describeContents () 목적 (0) | 2020.11.09 |
다른 플랫폼과 함께 iOS GameKit의 "Bluetooth Bonjour"사용 (0) | 2020.11.09 |