Microsoft MVP성태의 닷넷 이야기
.NET : 81. C# - 왜 모든 함수호출에서 callvirt 를 사용할까? [링크 복사], [링크+제목 복사],
조회: 12294
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

Why does C# always use callvirt?
; http://blogs.msdn.com/ericgu/archive/2008/07/02/why-does-c-always-use-callvirt.aspx

저도 뭐... ^^; 개인적으로 IL 코드를 잘 살펴보지는 않아서 callvirt 가 항상 쓰인다는 사실에 대해서 몰랐었는데요.

어쨌든.

이렇게 정해진 것은... 아주 아주 먼 옛날, 1999년 12월 13일이었다고. 이야기에 의하면 아마도 다음과 같은 구문이 아무런 문제없이 실행되었다고 합니다.

MyClass test = null;
test.DoMethod(); // 예외발생하지 않음.

DoMethod 라는 메서드 내부에서 해당 타입의 멤버를 전혀 액세스 하지 않는 경우였다고 합니다. 그런데, DoMethod 에서 멤버를 액세스하는 다른 내부 멤버 함수를 호출하는 경우, 해당 함수에서 예외가 발생했다는데.

그 결과, 그런 요상한 상황을 해결하기 위한 간단한 방법으로 모든 함수 호출을 callvirt 로 생각했고, 테스트 결과 그에 대한 성능 감소가 작았기 때문에 결정되었다고 합니다.

재미있죠. ^^








[최초 등록일: ]
[최종 수정일: 7/7/2008]


비밀번호

댓글 작성자
 




... 16  17  18  19  [20]  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
700정성태3/27/20079522Visual C++ : 9. 실행시에 Manifest 파일 선택
699정성태3/26/200710219TFS : 91. TeamPlain 제품 TFS 라이선스를 통해 무료 제공
698정성태3/24/200710110Vista : 40. 바탕화면 공유 API
697정성태3/24/20079167개발 환경 구성: 87. IE 7 단축키
696정성태3/24/200710114.NET 3.5 : 11. LINQ to SQL - Linq 구문이 실제로 어떤 SQL 문인지 확인하는 방법
695정성태3/23/200714525개발 환경 구성: 86. 비스타 - 무선 ad-hoc 네트워크 생성파일 다운로드1
694정성태3/22/200710102TFS : 90. 브랜치 기능에 대한 가이드를 담은 문서 [1]
693정성태3/21/200710523Debug : 11. 프로세스 정지 상태를 위한 AdPlus 사용 예
692정성태3/20/200710814TFS : 89. 개별 솔루션에 대해 사용자 정의 속성값 전달하는 방법
691정성태3/19/200710093.NET 3.0 : 16. Visual Studio 2005 ToolBox for Windows CardSpace
690정성태3/19/200710102TFS : 88. 단위 테스트 - VSTS for DB Pro
689정성태3/19/20079974개발 환경 구성: 85. ASP.NET 2.0 을 사용하여 웹 표준 사이트 제작
688정성태3/14/200710628VS.NET IDE : 27. Func-eval 기능
687정성태3/14/200710074VS.NET IDE : 26. Orcas - VC++ /MPn 스위치
686정성태3/14/20079744TFS : 87. 64비트 시스템에서의 TFS 설치
685정성태3/14/20079814VS.NET IDE : 25. Orcas - 데이터 관련 툴 기능
684정성태3/14/200710467.NET 3.5 : 10. Extension Method
683정성태3/13/200710447.NET 3.5 : 9. 새로 추가된 TraceListener - EventSchemaTraceListener
682정성태3/13/200710562.NET 3.0 : 15. XAML 내용을 XPS 문서로 변환
681정성태3/13/20079914.NET 3.5 : 8. Orcas 3월 CTP 버전에 맞게 수정된 LINQ Samples
680정성태3/13/20079924.NET : 55. 비스타의 Command Link Control 사용
679정성태3/13/20079514VS.NET IDE : 24. Orcas - ClickOnce의 기능을 이어받는 IE 임베딩 유형의 스마트 클라이언트 [2]
678정성태3/9/20079773Debug : 10. MPI 프로그램에 대한 디버깅 환경 설정
677정성태3/8/200710378.NET 3.5 : 7. Orcas 3월 CTP 에 맞는 WF/WCF 예제 코드
676정성태3/8/20079747VS.NET IDE : 23. 문자열 다국어 지원을 위한 Refactoring Tool
675정성태3/7/20079440Debug : 9. 실행 시 IL 코드 교체 프로파일러
... 16  17  18  19  [20]  21  22  23  24  25  26  27  28  29  30  ...