-
is
- is 는 캐스팅이 가능한지를 확인하는 키워드이다. 캐스팅이 가능하면 true, 불가능하면 false를 리턴하는 것으로 객체와 참조 변수의 관계만을 확인 시켜준다.
class Program
{
static void Main(string[] args)
{
Car myCar = new benz();
if(myCar is benz)
{
Console.WriteLine("casting");
}
}
}
class Car{}
class benz : Car{}
-
as
- as 는 캐스팅이 가능하다면 바로 캐스팅을 시켜주고 아니라면 null을 리턴한다. (Car_benz as Benz).print()와 같이 캐스팅 후 다른 참조 변수 대입없이 바로 메소드 호출이 가능하다.
class Program
{
static void Main(string[] args)
{
Car Car_benz = new Benz();
Car Car_bmw = new Car();
Benz benz = Car_benz as Benz;
benz.print();
(Car_benz as Benz).print();
Console.Write(Car_bmw as Benz);
}
}
class Car{}
class Benz : Car
{
public void print()
{
Console.WriteLine("benz");
}
}
is/as를 사용하면 강제 캐스팅보다 더 안정적이고 캐스팅이 안될 경우를 한번 거를 수 있어 예외를 처리할 필요가 없지므로 코드가 훨씬 간결하고 가독성이 좋아진다.