C#에서는 형변환을 위해 is와 as 연산자를 제공한다.
is는 객체가 해당 형식에 해당하는 지를 검사하여 bool 값을 결과로 반환.
as는 형 변환 연산자와 같은 역할을 하지만, 형변환 연산자가 변환에 실패하는 경우에는 예외를 던지는 반면, as 연산자는 객체 참조를 null로 만든다.
일반적으로 as 연산자를 사용하는 쪽을 권장.
준비
using System;
class Mammal{}
class Dog : Mammal{}
class Cat : Mammal{}
테스트1
Mammal m1 = new Dog();
Dog dog;
Cat cat;
if(m1 is Dog)
{
dog = (Dog)m1;
Console.WriteLine("m1 is dog");
}else{
Console.WriteLine("m1 is not dog");
}
if(m1 is Cat)
{
cat = (Cat)m1;
Console.WriteLine("m1 is cat");
}else{
Console.WriteLine("m1 is not cat");
}
m1 is dog
m1 is not cat
테스트2
Mammal m2 = new Cat();
dog = m2 as Dog;
cat = m2 as Cat;
if(dog != null){
Console.WriteLine("m2 is dog");
}else{
Console.WriteLine("m2 is not dog");
}
if(cat != null){
Console.WriteLine("m2 is cat");
}else{
Console.WriteLine("m2 is not cat");
m2 is not dog
m2 is cat
참조
뇌를 자극하는 C# 5.0 프로그래밍, 박상현, 한빛미디어
'아카이빙 > C#' 카테고리의 다른 글
[C#] 확장 메소드 (Extension Method) (0) | 2018.06.18 |
---|---|
[C#] 오버라이딩 (0) | 2018.06.18 |
[C#] this() 생성자 (0) | 2018.06.18 |
[C#] 얕은 복사와 깊은 복사 (0) | 2018.06.18 |
[C#] static 필드와 메소드 (0) | 2018.06.18 |