[C#] as와 is 연산자

2024. 4. 17. 15:38·C#

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
'C#' 카테고리의 다른 글
  • [C#] Generic<T>의 모든 것
  • [C#] 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy)
  • [C#] property도 override가 가능하다.
Logger's
Logger's
생각을 담는 공간 이곳은 게임 개발 아카이브
  • Logger's
    Game Development Archive
    Logger's
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • Unity (7)
      • C# (4)
      • 디자인 패턴 (3)
      • 자료구조&알고리즘 (0)
      • Tip (5)
      • 이슈 해결 (3)
      • IDE (2)
      • C++ (0)
      • C++ STL (0)
      • DirectX (0)
      • 잡담 (0)
      • 취미 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    drag
    .editorconfig
    DirectX #Supersampling
    Unity
    유니티
    모바일 환경
    DirectX #Texturing
    utf-8
    DirectX #Refraction #Reflection
    한글 깨짐
    swipe
    Computer Graphics
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
Logger's
[C#] as와 is 연산자
상단으로

티스토리툴바