C#에서 형식 변환(Type Conversion)은 크게 암시적 변환(Implicit Conversion)과 명시적 변환(Explicit Conversion) 두 가지 방식으로 나뉩니다.
암시적 형식 변환이란?
암시적 형식 변환은 개발자가 별도의 코드를 작성하지 않아도 C# 컴파일러가 자동으로 수행하는 변환을 의미합니다. 이 과정은 항상 타입 세이프(type-safe)하게 진행되기 때문에 데이터 손실이나 오류가 발생하지 않습니다.
대표적인 암시적 변환의 예는 다음과 같습니다.
- 작은 정수형에서 큰 정수형으로의 변환 (예:
int→long) - 파생 클래스(자식 클래스)에서 기본 클래스(부모 클래스)로의 변환
int를 long으로 암시적 변환하기
개념을 이해하기 위해 int 값을 long 변수에 암시적으로 변환하는 예제를 살펴보겠습니다.
int val1 = 11000; int val2 = 35600; long sum; sum = val1 + val2;
위 코드에서 val1과 val2는 모두 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
정리
암시적 형식 변환은 다음과 같은 경우에 안전하게 사용할 수 있습니다.
- 데이터 손실 가능성이 없는 작은 타입 → 큰 타입 변환 (예:
byte→short,int→long,float→double) - 상속 관계에서 자식 클래스 → 부모 클래스 변환 (업캐스팅)
반대로 큰 타입을 작은 타입으로 변환할 때는 데이터 손실 위험이 있으므로, 반드시 캐스트 연산자를 사용한 명시적 변환(explicit conversion)이 필요합니다.