형 변환(Type Conversion)은 한 자료형의 값을 다른 자료형으로 변환하는 것을 의미합니다. C#에서 형 변환은 묵시적 형 변환(Implicit Conversion)과 명시적 형 변환(Explicit Conversion)으로 나뉩니다.
1. 묵시적 형 변환 (Implicit Conversion)
묵시적 형 변환은 컴파일러가 자동으로 수행하는 형 변환입니다. 주로 데이터 손실이 없는 변환, 즉 작은 크기의 자료형에서 큰 크기의 자료형으로 변환할 때 발생합니다.
- 예시:
int
에서double
로 변환
int myInt = 10;
double myDouble = myInt; // 자동으로 형 변환
Console.WriteLine(myDouble); // 출력: 10.0
2. 명시적 형 변환 (Explicit Conversion)
명시적 형 변환은 프로그래머가 직접 형 변환을 지정해야 하는 경우입니다. 보통 큰 크기의 자료형에서 작은 크기의 자료형으로 변환할 때 데이터 손실이 발생할 수 있으므로, 명시적으로 캐스트 연산자를 사용해야 합니다.
- 캐스트 연산자:
(자료형)
을 사용하여 명시적으로 형 변환을 수행합니다. - 예시:
double
에서int
로 변환
double myDouble = 9.78;
int myInt = (int)myDouble; // 명시적으로 형 변환
Console.WriteLine(myInt); // 출력: 9 (소수점 이하가 버려짐)
3. 형 변환 관련 주의 사항
- 데이터 손실: 큰 자료형에서 작은 자료형으로 변환할 때, 데이터 손실이 발생할 수 있습니다. 예를 들어, 소수점을 포함한 실수형(
double
)을 정수형(int
)으로 변환할 경우 소수점 부분이 삭제됩니다. - Overflow: 형 변환 시 값이 변환 대상 자료형의 범위를 넘는 경우, 오버플로(Overflow)가 발생할 수 있습니다. 이를 방지하기 위해 checked 문을 사용할 수 있습니다.
checked {
int maxInt = int.MaxValue;
int result = maxInt + 1; // Overflow 발생
}
4. 형 변환을 위한 주요 메서드
C#에서 문자열이나 기타 자료형을 다른 형으로 변환할 때는 여러 메서드를 사용할 수 있습니다.
Convert.ToInt32()
,int.Parse()
: 문자열을 정수로 변환Convert.ToDouble()
: 문자열을 실수로 변환
string str = "123";
int num = int.Parse(str); // 문자열을 정수로 변환
Console.WriteLine(num); // 출력: 123
5. 박싱(Boxing)과 언박싱(Unboxing)
- 박싱(Boxing): 값형 데이터를 참조형 데이터로 변환하는 것.
- 언박싱(Unboxing): 참조형 데이터를 다시 값형으로 변환하는 것.
int num = 123;
object obj = num; // 박싱
int unboxedNum = (int)obj; // 언박싱
요약
- 묵시적 형 변환은 컴파일러가 자동으로 수행하는 변환.
- 명시적 형 변환은 프로그래머가 캐스트 연산자를 사용하여 직접 수행.
- 형 변환 시 데이터 손실이나 오버플로가 발생할 수 있음.
- 박싱과 언박싱은 값형과 참조형 간의 변환.
형 변환은 프로그램의 효율성과 안전성에 큰 영향을 미치므로, 올바른 자료형을 사용하고 형 변환을 신중하게 처리하는 것이 중요합니다.
'2학년 2학기 > 윈도우즈 프로그래밍' 카테고리의 다른 글
필드와 프로퍼티의 차이 (0) | 2024.09.30 |
---|---|
표준 입출력 (0) | 2024.09.30 |
오버 플로우 검사문 (Checked) (0) | 2024.09.30 |
Break와 Continue (0) | 2024.09.30 |
Nullable Type (0) | 2024.09.30 |