2016-09-26 3 views
0

오늘 회사에서 오래된 프로젝트를 시도해보고 오류가있어 궁금한 점이 있습니다.C# 동적 값의 값 비교

if((dynamic)com_list.GetIntValue() != (dynamic)container.GetEnumValue()) 

예외는 당신이 EnumInt32을 비교할 수 없음을 분명하게 보여줍니다 문제 라인은 다음과 같이 보입니다.

하지만 일부 상황에서 이것이 실제로 작동했는지 궁금합니다.

더 이상 허용되지 않는 dynamic 키워드에 변경 사항이 있습니까?


BTW, 그는이 같은 코드에서이 구축 :

if((dynamic)com_list.GetIntValue() != (dynamic)container.GetBooleanValue()) 

을 누군가가 productiv 코드로 비교의이 종류를 넣어 왜 아직도 혼동하고있다.

+3

정말 작동 했습니까? 어떤 시점에서 코드가 실제로 실행 되었습니까? –

+0

Nope. 제품이 배송되었지만이 코드 부분은 사용되지 않습니다. 그리고 나는 지금 정말로 혼란 스럽다. – Smartis

답변

1

아니요. dynamic 사양은 변경되지 않았으며 컴파일러의 평가가 한 번의 릴리스에서 다른 버전으로 변경되지 않았 음을 확신합니다. 코드가 작동하지 않을 확률이 높습니다.

enum에서 int (또는 그 반대)에서 추가 캐스트를하지 않으면 작동하지 않습니다.

+0

고맙습니다. 그러나 나는 아직도 혼란 스럽다. 왜 누군가가 이런 종류의 것을 productiv 코드로 비교할 것인가. – Smartis

+0

좋은 질문입니다. 왜 저자에게 물어 보지 않으시겠습니까? 아마 잊혀진, 테스트되지 않은 코드 일 겁니다. –

+0

동적으로 캐스팅 할 가능성이 가장 높은 것은 코드를 컴파일하는 것입니다. 제작자는 실제로 작동하는지 여부에 대해 신경 쓰지 않았습니다. – Evk