아카이빙/C#

[C#] 형변환과 is, as

셩님 2018. 6. 18. 06:05

[C#] 형변환과 is, as

  • 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