as와 is 연산자는 타입 변환이나 타입 검사를 효율적으로 처리할 때 사용된다.
각 연산자의 상세한 내용은 아래 내용을 참고하자.
# as 연산자
객체를 캐스팅할 때 사용되는 연산자이다.
as연산자는 캐스팅에 성공 시 변환된 객체를 리턴하고 변환에 실패 시 null값을 리턴한다.
클래스 타입 변환을 명시적으로 하는 경우도 있지만, 타입 변환이 불가능한 클래스를 타입 변환 시 컴파일 시점에서 에러가 발생하지 않지만 런타임 시점에서 "InvalidCastException"이 발생할 수 있다.
위와 같은 예외적인 상황을 방지하기 위해 as연산자를 사용하여 캐스팅 결과 값이 null인지 간단한 조건을 통해 캐스팅 성공유무를 확인할 수 있다.
// Animal 클래스와 그의 파생 클래스인 Dog 클래스가 있다고 가정한다.
class Animal {}
class Dog : Animal {}
Animal animal = new Dog();
Dog dog = animal as Dog; // animal을 Dog로 변환한다.
if (dog != null)
{
Console.WriteLine("변환 성공!");
}
else
{
Console.WriteLine("변환 실패!");
}
# is 연산자
as연산자와 유사하게 캐스팅 성공유무를 확인할 수 있는 연산자이다.
is연산자는 캐스팅 가능한 경우 true, 불가할 경우 false를 리턴한다.
즉, 캐스팅 성공 유무만 판단할 수 있다는 점이 특징이다.
// Animal 클래스와 그의 파생 클래스인 Dog 클래스가 있다고 가정한다.
class Animal {}
class Dog : Animal {}
Animal animal = new Dog();
if (animal is Dog)
{
Console.WriteLine("변환 가능!");
}
else
{
Console.WriteLine("변환 불가능!");
}
"댓글과 공감 버튼은 양질의 글을 작성하는데 큰 힘이 됩니다!"
감사합니다.
'C#' 카테고리의 다른 글
| [C#] Generic<T>의 모든 것 (1) | 2024.06.18 |
|---|---|
| [C#] 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy) (0) | 2024.05.30 |
| [C#] property도 override가 가능하다. (0) | 2024.05.27 |