Microsoft MVP성태의 닷넷 이야기
Expression에 대한 책의 예제 관련하여 질문드립니다. [링크 복사], [링크+제목 복사],
조회: 8045
글쓴 사람
horizon
홈페이지
첨부 파일
 

안녕하세요!
C# 7.1을 공부 중에 궁금한 점이 생겨 질문 드리려 합니다.

p.635의 아래 예제에서,


Expression<Func<int, int, int>> exp = (a, b) => a + b;
// 람다 식 본체의 루트는 이항 연산자인 + 기호
BinaryExpression opPlus = exp.Body as BinaryExpression;
Console.WriteLine(opPlus.NodeType); // 출력 결과: Add


3번째 줄에 질문이 있습니다!
1. exp.Body의 리턴 형식을 보니 Expression class이고
2. 이것을 BinaryExpression으로 캐스팅을 하는데,
3. 상속 관계를 보니, Object -> Expression -> BinaryExpression 인 것 같습니다.
4. 즉 3번째 줄에서 opPlus는 null이 되어야 하는 거 아닌가요?
(Expression 형식을 그것의 자식타입인 BinaryExpression으로 캐스팅 했으므로?)
5. 그런데 출력이 잘 나오네요.. ㅎㅎ;

opPlus는 null 이 아니고 제대로 캐스팅 된 결과값인 것 같은데,
제가 잘못 알고 있는 부분이 어떤 부분인지 알려 주시길 부탁 드립니다! 감사합니다.









[최초 등록일: ]
[최종 수정일: 8/20/2018]


비밀번호

댓글 작성자
 



2018-08-20 01시23분
만약 Body의 속성에 담고 있는 타입이 Expression이라면 캐스팅 오류가 나는 것이 맞습니다. 하지만, Body 속성의 타입이 Expression인 것일 뿐, Body가 담고 있는 값도 Expression인 것은 아닙니다. 즉, 그런 경우에 Body 속성은 BinaryExpression 형식의 인스턴스를 담고 있기 때문에 형변환이 제대로 되고 있는 것입니다.
정성태

... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
1526황상대1/26/201513307C# 마샬링 관련 질문이 있습니다. [1]
1525Ji-y...1/19/201511913시작하세요 C# 프로그래밍 도서에 관한 질문입니다. [1]
1523임종복12/31/201419305windows 2008 r2에서 ms-sql 2008 서버사용시 tls문제점 [3]
1524임종복1/4/201514179    답변글 [답변]: windows 2008 r2에서 ms-sql 2008 서버사용시 tls문제점 [2]
1521윤대욱12/19/201411698C++ 에서 서버와 클라이언트를 나누어서 구조체 전달에 대해서 궁금합니다. [1]파일 다운로드1
152012/10/201412031datetime관련해서요 [1]
1516aTo12/1/201411496wpf 배포관련. [3]
1514얄미운제리11/17/201412773[C# Mono]Mono Chart 개발 문의드립니다. [1]
1355미나리나물11/13/201410323RDP 접속 방식 질문드리고 싶습니다. [1]
1353송용국11/10/20149456TeamFoundationServer 에 소스를 Target서버로 옮기는(내려주는) 방법 있나요? [1]
1351blue...11/7/201414258c# webbrowser 모바일환경 접속 [1]
1350에메11/7/201413736WCF namedpipe 퍼블리싱 충돌 문제 [3]파일 다운로드1
1349Chun...11/6/201418575Microsoft. Net Framework 액세스 거부 오류...... [2]
1348김준석11/6/201414409 Mini dump 기록 안되는 현상 [2]파일 다운로드1
1346개미11/5/201428847https페이지에서 http서버에 있는 이미지 파일 호출시 보안 오류 [8]
1345장구니11/4/201412364AWS 인스턴스를 만들었는데 [1]
1343h11/2/201412259안녕하세요 [1]
1342왕초보11/1/201417294C#에서의 함수포인터 [13]
1347왕초보11/5/201412481    답변글 [답변]: C#에서의 함수포인터 [1]
1341영택10/29/201413287MFC Amazon S3 사용관련하여 질문드립니다. [2]
1344영택11/4/201410019    답변글 [답변]: MFC Amazon S3 사용관련하여 질문드립니다. [2]
1340감사합니다10/28/201414436c# wpf shdocvw internet explorer를 윈도우프레임으로 집어 넣을 수 있는지 궁금합니다. [3]파일 다운로드1
1338헬프미10/28/201415374tcp 소켓의 SYN_RECV 상태에 대하여 질문있습니다. [3]
1336이소정10/27/201410889filestream seek에 대해 질문있습니다. [1]
1337이소정10/28/201410882    답변글 [답변]: filestream seek에 대해 질문있습니다.파일 다운로드1
1339이소정10/28/201413768        답변글 [답변]: [답변]: filestream seek에 대해 질문있습니다. [2]파일 다운로드2
... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...