C# 형 변환(타입 캐스팅)이란?
형 변환(Type Casting)은 하나의 데이터 타입을 다른 데이터 타입으로 변환하는 과정을 의미합니다. C#에서는 크게 두 가지 방식의 형 변환을 지원합니다.
암시적 형 변환(Implicit Conversion)
암시적 형 변환은 C# 컴파일러가 타입 안전(type-safe)한 방식으로 자동으로 수행하는 변환입니다. 대표적인 예로 다음과 같은 경우가 있습니다.
- 작은 크기의 정수형에서 더 큰 크기의 정수형으로 변환 (예:
int→long) - 파생 클래스(자식 클래스)에서 기본 클래스(부모 클래스)로 변환
int num = 100;
double d = num; // 암시적 변환: int → double, 별도 연산자 불필요
명시적 형 변환(Explicit Conversion)
명시적 형 변환은 사용자가 직접 캐스트 연산자(cast operator)나 미리 정의된 변환 함수를 사용하여 수행하는 변환입니다. 데이터 손실이 발생할 수 있는 변환이기 때문에 개발자가 명시적으로 의도를 표현해야 합니다.
double d = 9.78;
int i = (int)d; // 명시적 변환: double → int, 캐스트 연산자 필수
C# 기본 제공 형 변환 메서드
C#은 Convert 클래스를 통해 다양한 내장 형 변환 메서드를 제공합니다. 주요 메서드는 다음과 같습니다.
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | ToBoolean 가능한 경우 해당 타입을 Boolean(true/false) 값으로 변환합니다. |
| 2 | ToByte 해당 타입을 8비트 부호 없는 정수인 byte 타입으로 변환합니다. |
| 3 | ToChar 가능한 경우 해당 타입을 단일 유니코드 문자(char)로 변환합니다. |
| 4 | ToDateTime 정수 또는 문자열 타입을 날짜·시간(DateTime) 구조체로 변환합니다. |
| 5 | ToDecimal 부동 소수점 또는 정수 타입을 decimal 타입으로 변환합니다. |
| 6 | ToDouble 해당 타입을 배정밀도 부동 소수점인 double 타입으로 변환합니다. |
예제: 정수를 문자열로 변환하기
다음 예제는 ToString() 메서드를 사용하여 정수 타입을 문자열 타입으로 변환하는 방법을 보여줍니다.
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
int i = 20;
Console.WriteLine(i.ToString());
Console.ReadKey();
}
}
}
출력 결과
20
위 예제에서 i.ToString()은 정수 값 20을 문자열 "20"으로 변환하여 화면에 출력합니다. 이처럼 C#은 상황에 맞는 다양한 형 변환 방식을 제공하므로, 각 방식의 특성과 데이터 손실 여부를 이해하고 적절히 활용하는 것이 중요합니다.