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

C# 형 변환(Type Conversion) 완벽 가이드: 암시적 변환과 명시적 변환

C#에서 한 데이터 타입을 다른 데이터 타입으로 바꾸는 과정을 형 변환(Type Conversion)이라고 합니다. C#은 크게 두 가지 방식의 형 변환을 지원합니다.

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

암시적 형 변환은 개발자가 별도의 코드를 작성하지 않아도 C# 컴파일러가 자동으로 수행하는 변환입니다. 이 변환은 항상 타입 안전(type-safe)한 방식으로 이루어지며, 데이터 손실이 발생하지 않는 경우에만 적용됩니다.

대표적인 예는 다음과 같습니다.

  • 작은 정수 타입에서 큰 정수 타입으로의 변환 (예: intlong)
  • 파생 클래스(자식 클래스)에서 기본 클래스(부모 클래스)로의 변환

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

명시적 형 변환은 개발자가 직접 캐스트 연산자(cast operator)를 사용하여 수행하는 변환입니다. 미리 정의된 함수나 캐스트 연산자를 활용하며, 데이터 손실이 발생할 가능성이 있기 때문에 반드시 개발자가 의도를 명확히 밝혀야 합니다.

예를 들어, double 타입을 int 타입으로 변환하면 소수점 이하 값이 잘려나가므로, 이런 경우에는 명시적 캐스트가 필요합니다.

예제 코드

다음은 doubleint로 명시적 형 변환하는 예제입니다.

using System;

namespace Demo {
    class Program {

        static void Main(string[] args) {
            double d = 8745.97;
            int x;
            x = (int)d;   // 명시적 형 변환 (캐스트 연산자 사용)
            Console.WriteLine(x);
            Console.ReadKey();
        }
    }
}

실행 결과

8745

위 예제에서 변수 d의 값은 8745.97이지만, (int) 캐스트 연산자를 통해 변환되면서 소수점 이하가 버려지고 8745만 출력됩니다. 이처럼 명시적 형 변환은 데이터 손실을 동반할 수 있으므로, 변환 전후의 값을 신중하게 확인하는 것이 좋습니다.