is는 객체가 해당 형식에 해당하는 지를 검사하여 bool 값을 결과로 반환.
as는 형 변환 연산자와 같은 역할을 하지만, 형변환 연산자가 변환에 실패하는 경우에는 예외를 던지는 반면, as 연산자는 객체 참조를 null로 만든다.
using System;
class Mammal{}
class Dog : Mammal{}
class Cat : Mammal{}
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
Mammal m2 = new Cat();
dog = m2 as Dog;
cat = m2 as Cat;
if (dog)
Console.WriteLine("m2 is dog");
else
Console.WriteLine("m2 is not dog");
if (cat)
Console.WriteLine("m2 is cat");
else
Console.WriteLine("m2 is not cat");
// m2 is not dog
// m2 is cat
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# Boxing Unboxing 박싱 언박싱 값>참조, 참조>값 (0) | 2022.06.19 |
---|---|
C# 제네릭 (C++ > 템플릿) (0) | 2022.06.13 |
C# Delegate Event 사용법 (0) | 2022.06.08 |
C# 사용자 정의 전환 연산자(암시적/명시적) (0) | 2022.06.08 |
C# LINQ (0) | 2022.06.07 |