C#/TIL(Today I Learned)

2025-04-26 <형변환>

프린스 알리 2025. 4. 26.

 

C#에서 as, is, 명시적 형변환 정리

1. as 형변환

as 키워드는 참조 타입 또는 nullable 값 타입끼리 변환할 때 사용한다.

타입 변수 = 식 as 타입;
  • 변환 성공 시: 변환된 객체를 반환한다.
  • 변환 실패 시: 예외를 발생시키지 않고 null을 반환한다.

예시

object obj = "Hello World";
string str = obj as string;

if (str != null)
{
    Console.WriteLine(str);
}

특징

  • 실패해도 프로그램이 죽지 않는다.
  • 단, 변환 후에는 null 체크가 필수이다.
  • 값 타입에는 사용할 수 없다.

2. 명시적 형변환 (Explicit Cast)

명시적 형변환은 (타입) 형태로 개발자가 직접 변환을 지시하는 방식이다.

(타입)식
  • 변환 성공 시: 변환된 객체를 반환한다.
  • 변환 실패 시: InvalidCastException 예외를 발생시킨다.

예시

object obj = "Hello World";
string str = (string)obj; // 성공

object numObj = 123;
string str2 = (string)numObj; // 실패 -> 예외 발생

특징

  • 참조 타입과 값 타입 모두 변환할 수 있다.
  • 실패하면 예외를 반드시 처리해야 한다.

3. is 키워드

is 키워드는 객체가 특정 타입과 호환되는지 검사할 때 사용한다.
형변환은 하지 않고, 단순히 타입 검사를 수행한다.

if (식 is 타입)
{
    // 타입이 맞을 경우 실행할 코드
}

예시

object obj = "Hello World";

if (obj is string)
{
    Console.WriteLine("obj는 string 타입이다.");
}

4. as와 is

조합 사용 예시

is로 먼저 확인하고, as로 변환하는 식의 안전한 코딩이 가능하다.

if (obj is string)
{
    string str = obj as string;
    Console.WriteLine(str);
}

 

is를 이용해 타입 검사 + 형변환을 한 번에 수행하는 것도 가능하다.

if (obj is string str)
{
    Console.WriteLine(str);
}

 

댓글