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);
}
'C# > TIL(Today I Learned)' 카테고리의 다른 글
2025-04-26 <Action과 Func와 람다 함수> (0) | 2025.04.26 |
---|---|
2025-04-24 <박싱과 언박싱> (0) | 2025.04.24 |
2025-04-23 <const와 readonly> (0) | 2025.04.23 |
2025-04-19 <ArraySegment> (0) | 2025.04.19 |
2025-04-18 <SocketAsyncEventArgs 이해하기> (2) | 2025.04.18 |
댓글