본문 바로가기
2학년 2학기/윈도우즈 프로그래밍

형변환(캐스팅)

by kkkkk1023 2024. 9. 30.

형 변환(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