블로그는 귀차니즘

First Sensation
  • 공지
  • 지역로그
  • 태그
  • 방명록

C# As Casting - 새로운 캐스팅 방법

Language 2008/03/17 23:48 귀차니스트

  회사에서 하는 일이 C#으로 클라이언트들의 프로그램을 개발하는 일이다 보니 학교에서 조금 배웠던 C#을 어느정도 능숙하게 다룰 수 있겠 되었습니다. 그러다 보니 꽤나 색다른 방법들도 알게 되더군요. 바로 캐스팅부분이라고 할 수 있습니다.

Casting.c (Language : c)
  1. int main( int argc, char **argv )
  2. {
  3.     int a = 10;
  4.     double b = ( double )a;
  5.     return 0;
  6. }

  몇몇을 제외한 보통의 대학들이나 시중에서 처음 시작하는 언어가 대부분 C 언어이기 때문에 위와 같은 형 변환 구문을 자주 보셨을 겁니다. 하지만 () 를 자주 사용하여 형 변환을 하다보니 코드의 가독성이 떨어지는 등의 단점이 적지 않게 있죠.

Casting.cpp (Language : cpp)
  1. int main( int argc, char **argv )
  2. {
  3.     int a = 10;
  4.     double b = static_cast< int >( a );
  5.     return 0;
  6. }

  그래서 C++ 에서는 캐스팅을 보다 쉽게(?) 읽기 위하여 static_cast, const_cast, reinterpret_cast, dynamic_cast 등을 사용하여 형 변환 하게 됩니다. 형식이 한 가지의 형 변환 형식에서 탈피한 여러가지 방식을 문자를 통하여 보여주고 있으므로 C방식의 형 변환 보다는 판독하기가 쉽습니다.
  이렇게 언어들이 계속 사용되면서 차츰차츰 발전되어왔는데요. 그럼 C# 에서는 형 변환을 어떻게 할까요?

Casting.cs (Language : csharp)
  1. class TempClass {
  2. .
  3. .
  4. .
  5. 생략
  6. }
  7.  
  8. class TempClass2 : TempClass {
  9. .
  10. .
  11. .
  12. 생략
  13. }
  14.  
  15. public int Convert()
  16. {
  17.     int a = 10;
  18.     int b = ( int )a;   
  19.     return 0;
  20. }
  21.  
  22. public int Convert2()
  23. {
  24.     TempClass Cls = null;
  25.     TempClass2 Cls2 = new TempClass();
  26.     Cls = Cls2 as TempClass;
  27.  
  28.     return 0;   
  29. }

  바로 As 를 사용한 캐스팅이 문법에 추가되었기 때문에 이를 이용하는 방법이 주로 사용되죠, 하지만 이 방법은 값 형식에는 적용되지 않으므로 그 때엔 기존의 () 를 이용한 형 변환이 사용됩니다. 그런데 그냥 코드를 보면 그다지 이익이 보이는 것 같지 않죠?
  하지만 한 가지 이익은 있다고 볼 수 있습니다. () 를 이용한 형 변환을 하게 될 때는 컴파일상 코드에 있어서 많은 부분에 대해서 테스트를 거치지 않게 되고 런타임상 에러가 발생하게 된다면 InvalidCastException이 발생하게 됩니다.
  그러나 as 를 이용하면 InvalidCastException이 일어나지 않고 NULL값으로 초기화 된다고 하는군요. 나름 쓸만한 기능이라고 생각을 하긴 합니다. 사실 그다지 다르다고 느끼는 점은 없지만요. 제가 C# 보다는 C++에 너무 익숙해져 있어서 그럴지도 모르겠습니다. 그래도 많은 부분이 달라진 것들이 차츰차츰 개선되어서 추가되고 하겠죠. 이러한 방법이 있다는 것도 알고 사용했으면 합니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

"Language" 분류의 다른 글

boost::spirit - Parser 라이브러리 (0)2008/04/23
std::ostreambuf_iterator, std::istreambuf_iterator의 이유 (1)2008/04/16
std::auto_ptr - Smart Pointer 이지만?? (1)2008/04/13
C# Application - Main 에서 Try-Catch 오작동 해결하는 방법 (7)2008/04/07
Boost 1.35 - 워크샵 뒤의 포스팅 (2)2008/04/03
2008/03/17 23:48 2008/03/17 23:48
TAG As Casting, As 형 변환, C#
받은 트랙백이 없고, 댓글 하나가 달렸습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/35

댓글을 달아 주세요

  1. 배만토토로 2009/02/16 15:39  댓글주소  수정/삭제  댓글쓰기

    아주 유요한 정보네요
    감사합니다

◀ 이전페이지 1 다음페이지 ▶

블로그 이미지
First Sensation 귀차니스트
rss
  • 관리자
  • 글쓰기

카테고리

  • 전체 (118)
    • Computer (3)
    • Language (14)
    • Reverse Engineering (1)
    • Algorithm (9)
    • TopCoder (3)
    • Library (2)
    • Programming (21)
    • Programming Tip (9)
    • PSP-Programming (10)
    • Program (5)
    • Small Talk (33)
    • Document (4)
    • OS Develope (4)

최근에 올라온 글

  • Script Interpreter - b....
  • VirtualHttpServer - 가.... (2)
  • 음.. 여러가지 일이 있.... (2)
  • 어후.. 드디어 인터럽트....
  • Kernel Image에 어이없....

최근에 달린 댓글

  • 헠 ㅋ 다음에도 들러주세용 ㅋㅋ. 귀차니스트 03/09
  • ㅎㅎ RSS로 첨 온 글이네.ㅋ. 당구리 02/22
  • 음.. 한글화 파일 0.5 버젼은.... 귀차니스트 02/22
  • 관리자만 볼 수 있는 댓글입.... 비밀방문자 01/30
  • 어떤 의미이신지 잘 모르겠네.... 귀차니스트 01/23

달력

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

링크

  • kkamagui 프로그래밍 세상.
  • runner님의 이글루.
  • 당구리의 마굿간.
  • 동우fly.
  • 류광의 번역 이야기.
  • 서광열의 프로그래밍 언....
  • 준호씨의 블로그.
  • 최익필의 이름없는 블로그.
  • 위키는 귀차니즘.

최근에 받은 트랙백

  • 한게임 테트리스 인공지.... 고니's Life 2009
  • ACM 706 (Uva ID) : LCD.... 알고리즘 트레이닝 : Oh... 2009
  • 문제 4 : LCD 디스플레.... 최익필의 이름없는 블로그 2009
  • 궁극의 예외처리. 이름없는 블로그 2008
  • Maximum sum. 티스토리 지점 2008

글 보관함

  • 2010/03 (1)
  • 2010/02 (1)
  • 2010/01 (1)
  • 2009/12 (3)
  • 2009/08 (1)

태그목록

  • i++
  • High Precision Event Timer
  • 파일입출력
  • Shell
  • Secure
  • 한글표현
  • Interface
  • 부트로더
  • Interpreter
  • 갑
  • 재귀적합성
  • Run Length
  • 램
  • Call By Value
  • KDevelop
  • Gradient
  • FTP
  • 디인터레이스
  • Inheritance
  • Newline
  • Sector
  • 후위연산
  • Pangya
  • tr1
  • Ribbon UI
  • 병렬처리
  • Borland
  • AppWizard
  • 디코드
  • GDI+

지역로그 : 태그 : 방명록 : 관리자 : 글쓰기
귀차니스트’s Blog is powered by Textcube 1.7.5 : Risoluto / Designed by DesignNia.net