오진이 블로그

[제프리 리처의 CLR via C#] 타입 간 캐스팅하기 본문

Development/C#

[제프리 리처의 CLR via C#] 타입 간 캐스팅하기

오늘도 진이 2021. 4. 7. 12:02

2부. 타입 설계

4장. 타입의 기초

타입 간 캐스팅하기

  • CLR의 중요한 기능들 중 하나는 타입 안전성이다. 실행 시점에서 CLR은 객체의 정확한 타입이 무엇인지 항상 파악하고 있다.
  • 타입 안정성은 CLR에서 다른 어떤 부분보다 중요하고 철저하게 지켜진다.
  • C#의 is와 as 연산자로 캐스팅하기
    • C# 언어에서 캐스팅 연산을 다루는 또 다른 방법은 is 연산자를 사용하는 것이다.
    • C#의 is 연산자는 어떤 객체가 주어진 타입과의 호환성이 있는지 여부를 판정하여, 참 또는 거짓으로 결과를 반환하는 기능이 있다. 이 연산자는 절대 예외를 발생시키지 않는다.
    • CLR의 타입 검사는 보안을 강화하지만, 성능에 관한 일정한 비용이 발생하는데, 비용이 발생하는 원인은 CLR이 변수에 들어있는 객체의 실제 타입을 파악하기 위하여 상속 관계를 탐색하면서 각 기본 타입들을 조사해야 하기 때문이다.
    • is 연산자 프로그래밍 패러다임이 일반적이기는 하지만, C#은 이러한 작업을 단순화하고 성능을 개선할 수 있도록 하기 위하여 as 연산자를 제공한다.
    • as 연산자는 예외를 전혀 발생시키지 않으면서 캐스팅을 수행하며, 객체를 캐스팅할 수 없는 경우 null을 반환하게 된다.
Comments