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

C#에서 형식 변환(Type Conversion)과 형식 캐스팅(Type Casting)의 차이점 완벽 정리

C#에서 형식 변환(type conversion)형식 캐스팅(type casting)은 사실상 같은 개념을 가리킵니다. 두 용어 모두 하나의 데이터 타입을 다른 데이터 타입으로 바꾸는 과정을 의미하며, C#에서는 이러한 변환이 크게 두 가지 방식으로 나뉩니다.

1. 암시적 형식 변환 (Implicit Type Conversion)

암시적 변환은 C# 컴파일러가 타입 안전성(type-safe)을 보장하는 경우에 자동으로 수행하는 변환입니다. 데이터 손실의 위험이 없기 때문에 개발자가 별도의 코드를 작성할 필요가 없습니다.

  • 작은 크기의 정수형에서 큰 크기의 정수형으로 변환 (예: intlong)
  • 파생 클래스(자식 클래스)에서 기본 클래스(부모 클래스)로 변환
int num = 100;
long bigNum = num; // 암시적 변환: int → long

2. 명시적 형식 변환 (Explicit Type Conversion)

명시적 변환은 개발자가 캐스트 연산자(cast operator)를 사용하여 직접 수행해야 하는 변환입니다. 큰 타입에서 작은 타입으로 변환하는 경우처럼 데이터 손실이 발생할 수 있기 때문에, 컴파일러가 자동으로 처리하지 않고 명시적인 캐스팅을 요구합니다.

다음은 double 타입을 int 타입으로 명시적으로 캐스팅하는 예제입니다.

예제 코드

using System;
namespace Demo {
    class Program {
        static void Main(string[] args) {
            double d = 9322.46;
            int i;

            // double을 int로 캐스팅
            i = (int)d;
            Console.WriteLine(i);
            Console.ReadKey();
        }
    }
}

실행 결과

9322

위 예제에서 볼 수 있듯이, (int)d와 같이 캐스트 연산자를 사용하면 소수점 이하 값(.46)은 잘려나가고 정수 부분인 9322만 남게 됩니다. 이처럼 명시적 변환은 데이터 손실이 발생할 수 있으므로 사용 시 주의가 필요합니다.

정리

  • 형식 변환 = 형식 캐스팅: C#에서 두 용어는 동일한 의미로 사용됩니다.
  • 암시적 변환: 컴파일러가 자동으로 처리하며 데이터 손실 위험이 없습니다.
  • 명시적 변환: 캐스트 연산자를 직접 작성해야 하며, 데이터 손실 가능성이 있습니다.