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

C# 암시적 형식 변환(Implicit Conversion)이란? 개념과 예제로 쉽게 이해하기

C#에서 형식 변환(Type Conversion)은 크게 암시적 변환(Implicit Conversion)명시적 변환(Explicit Conversion) 두 가지 방식으로 나뉩니다.

암시적 형식 변환이란?

암시적 형식 변환은 개발자가 별도의 코드를 작성하지 않아도 C# 컴파일러가 자동으로 수행하는 변환을 의미합니다. 이 과정은 항상 타입 세이프(type-safe)하게 진행되기 때문에 데이터 손실이나 오류가 발생하지 않습니다.

대표적인 암시적 변환의 예는 다음과 같습니다.

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

int를 long으로 암시적 변환하기

개념을 이해하기 위해 int 값을 long 변수에 암시적으로 변환하는 예제를 살펴보겠습니다.

int val1 = 11000;
int val2 = 35600;
long sum;

sum = val1 + val2;

위 코드에서 val1val2는 모두 int형 변수입니다. 그런데 두 값을 더한 결과를 long형 변수인 sum에 대입해도 아무런 오류가 발생하지 않습니다.

그 이유는 컴파일러가 자동으로 암시적 형식 변환을 수행하기 때문입니다. int(32비트)보다 long(64비트)이 더 큰 범위를 가지므로, 작은 타입에서 큰 타입으로의 변환은 안전하다고 판단하여 컴파일러가 스스로 처리해 주는 것입니다.

전체 예제 코드

using System;
using System.IO;

namespace Demo {
    class Program {
        static void Main(string[] args) {
            int val1 = 11000;
            int val2 = 35600;
            long sum;

            sum = val1 + val2;

            Console.WriteLine("Sum= " + sum);

            Console.ReadLine();
        }
    }
}

실행 결과

Sum= 46600

정리

암시적 형식 변환은 다음과 같은 경우에 안전하게 사용할 수 있습니다.

  • 데이터 손실 가능성이 없는 작은 타입 → 큰 타입 변환 (예: byteshort, intlong, floatdouble)
  • 상속 관계에서 자식 클래스 → 부모 클래스 변환 (업캐스팅)

반대로 큰 타입을 작은 타입으로 변환할 때는 데이터 손실 위험이 있으므로, 반드시 캐스트 연산자를 사용한 명시적 변환(explicit conversion)이 필요합니다.