Microsoft MVP성태의 닷넷 이야기
Expression에 대한 책의 예제 관련하여 질문드립니다. [링크 복사], [링크+제목 복사],
조회: 16000
글쓴 사람
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 형식의 인스턴스를 담고 있기 때문에 형변환이 제대로 되고 있는 것입니다.
정성태

... 76  77  78  79  [80]  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
499정성태10/30/200616761    답변글 [답변]: 질문 있습니다..ㅡ.ㅠ; [2]
495엔틱스10/25/200614326안녕하세요. 세션에 관련해서 질문을 올립니다. [2]
493안연준10/25/200614987스마트클라이언트 배포에서 Config 내용이 이해가 안되요
494안연준10/25/200613205    답변글 [답변]: 스마트클라이언트 배포에서 Config 내용이 이해가 안되요 [2]
489안연준10/23/200614452스마트 클라이언트 배포시 문제점
491안연준10/24/200615057    답변글 [답변]: 스마트 클라이언트 배포시 문제점 [2]
492안연준10/24/200614087        답변글 [답변]: [답변]: 스마트 클라이언트 배포시 문제점
488안연준10/23/200613832닷넷 프레임워크 때문에 일어난 어의없는 상황 [2]
484서민균10/20/200613944스마트 클라이언트 인쇄질문 올린 사람입니다.
486정성태10/22/200615241    답변글 [답변]: 스마트 클라이언트 인쇄질문 올린 사람입니다.
483guest10/19/200614339asp.net 에서 Com+ 등록된 dll 의 차이점이 무엇인지요?
485정성태10/22/200615047    답변글 [답변]: asp.net 에서 Com+ 등록된 dll 의 차이점이 무엇인지요?
490deve...10/23/200618367        답변글 [답변]: [답변]: asp.net 에서 Com+ 등록된 dll 의 차이점이 무엇인지요? [1]
478서민균10/17/200616278스마트 클라이언트로 만든 컴포넌트가 인쇄가 안되요.....ㅜㅜ [5]
477sagi...10/15/200615397bho 와 mfc 메시지 전송 관련 질문입니다.
479정성태10/17/200617119    답변글 [답변]: bho 와 mfc 메시지 전송 관련 질문입니다.
480sagi...10/17/200615096        답변글 [답변]: 감사합니다. [1]
481sagi...10/19/200615023            답변글 [답변]: 죄송합니다 .. 한가지 더 여쭤 볼께요
482정성태10/19/200614448                답변글 [답변]: [답변]: 죄송합니다 .. 한가지 더 여쭤 볼께요
496sagi...10/27/200615103                    답변글 [답변]: 감사드립니다.
476문태정10/11/200617489FarPointSpread로 출력 시 시트 암호설정문제 [1]
474임경훈10/9/200617802세션값이 유지가 안되는데요? [1]
470쿠리마9/29/200614290고수님들께 질문 올립니다. (C# COM Server에서 C++ Client에게 string맴버 포함한 구조체 배열 넘기기)파일 다운로드1
473정성태10/5/200616274    답변글 [답변]: 고수님들께 질문 올립니다. (C# COM Server에서 C++ Client에게 string맴버 포함한 구조체 배열 넘기기) [3]파일 다운로드1
469이방은9/29/200614012질문이 있어요.. [2]
466이승기9/25/200613781Attribute를 이용한 COM 구현 시 interface의 상속 [1]
... 76  77  78  79  [80]  81  82  83  84  85  86  87  88  89  90  ...