Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 'as' 연산자란? 개념부터 실전 예제까지 완벽 정리

C# 'as' 연산자란?

C#의 'as' 연산자는 서로 호환되는 형식(compatible types) 간의 변환을 수행하는 연산자입니다. 일반적인 캐스트(cast) 연산과 비슷하게 동작하지만, 참조 변환(reference conversion), nullable 변환, 박싱(boxing) 변환 세 가지만 지원한다는 점이 특징입니다.

따라서 사용자 정의 변환(user-defined conversion)과 같은 그 외의 변환은 'as' 연산자로 처리할 수 없으며, 이런 경우에는 반드시 캐스트 식(cast expression)을 사용해야 합니다.

'as' 연산자의 핵심 특징

  • 형식 변환이 성공하면 변환된 값을 반환합니다.
  • 변환이 불가능한 경우 예외를 발생시키지 않고 null을 반환합니다.
  • 값 형식(value type)에는 직접 사용할 수 없으며, nullable 형식을 통해서만 적용 가능합니다.

'as' 연산자 기본 문법

다음은 C#에서 'as' 연산자를 사용해 형식을 변환하는 기본적인 예입니다.

string s = obj[i] as string;

위 코드에서 obj[i]가 string 형식이라면 해당 문자열이 변수 s에 할당되고, 그렇지 않으면 s에는 null이 저장됩니다.

예제 코드

아래 전체 코드를 실행하면 'as' 연산자가 실제로 어떻게 동작하는지 확인할 수 있습니다.

using System;

public class Demo {
    public static void Main() {
        object[] obj = new object[2];
        obj[0] = "jack";
        obj[1] = 32;

        for (int i = 0; i < obj.Length; ++i) {
            string s = obj[i] as string;
            Console.Write("{0}: ", i);
            if (s != null)
                Console.WriteLine("'" + s + "'");
            else
                Console.WriteLine("This is not a string!");
        }
        Console.ReadKey();
    }
}

실행 결과

0: 'jack'
1: This is not a string!

코드 설명

배열 obj의 첫 번째 요소는 문자열 "jack"이므로 'as' 연산자가 성공적으로 string으로 변환하여 출력됩니다. 반면 두 번째 요소는 정수 32이므로 string으로 변환할 수 없어 null이 반환되고, "This is not a string!" 메시지가 출력됩니다.

이처럼 'as' 연산자는 잘못된 형식 변환 시 InvalidCastException 예외를 던지지 않고 null을 반환하기 때문에, 변환 가능 여부를 안전하게 검사해야 하는 상황에서 매우 유용하게 활용됩니다.