본문 바로가기
Function/C#

C# 데이터 형변환 (이론)

by wawManager 2024. 8. 14.
728x90

안녕하세요.

C#에서 데이터 형변환(Data Type Conversion)은 하나의 데이터 타입을 다른 데이터 타입으로 변환하는 과정입니다. C#에서는 암시적(implicit) 형변환과 명시적(explicit) 형변환이 있으며, 각 방식에 따라 데이터의 안전성과 변환 가능성이 달라집니다.

# 1. 암시적 형변환 (Implicit Conversion)

암시적 형변환은 작은 데이터 타입에서 큰 데이터 타입으로 변환할 때 자동으로 수행됩니다. 이 과정에서 데이터 손실이 없기 때문에 컴파일러가 자동으로 변환을 허용합니다.

 예시

int num = 123;
double bigNum = num;  // int에서 double로 암시적 형변환
Console.WriteLine(bigNum);  // 출력: 123.0


위 코드에서 int형 변수 num을 double형 변수 bigNum에 할당하면, 자동으로 double로 변환됩니다. 

 주요 특징
- 데이터 손실이 발생하지 않는 변환.
- 작은 범위에서 큰 범위로의 변환.
- 개발자가 명시적으로 형변환 코드를 작성할 필요 없음.

# 2. 명시적 형변환 (Explicit Conversion)

명시적 형변환은 큰 데이터 타입에서 작은 데이터 타입으로 변환할 때 사용됩니다. 이 경우 데이터 손실의 가능성이 있으므로, 개발자가 직접 형변환을 명시해줘야 합니다. 이를 캐스팅(casting)이라고도 합니다.

 예시

double bigNum = 123.45;
int num = (int)bigNum;  // double에서 int로 명시적 형변환
Console.WriteLine(num);  // 출력: 123


위 코드에서 double형 변수 bigNum을 int형 변수 num으로 변환할 때 (int)라는 캐스팅 구문을 사용하여 명시적으로 형변환을 수행합니다. 소수 부분이 제거되고, 정수 부분만 저장됩니다.

 주요 특징
- 데이터 손실 가능성이 있는 변환.
- 큰 범위에서 작은 범위로의 변환.
- 개발자가 명시적으로 캐스팅을 수행해야 함.

# 3. 변환 메서드 사용

C#에서는 Convert 클래스와 같은 메서드를 사용하여 형변환을 수행할 수도 있습니다. 이 메서드들은 주로 문자열을 숫자 타입으로 변환할 때 유용합니다.

 예시: Convert.ToInt32

string strNum = "123";
int num = Convert.ToInt32(strNum);
Console.WriteLine(num);  // 출력: 123


 예시: Parse 메서드

string strDouble = "123.45";
double num = double.Parse(strDouble);
Console.WriteLine(num);  // 출력: 123.45




# 4. TryParse 메서드

TryParse 메서드는 변환을 시도하고, 변환이 성공하면 결과를 반환하며 실패하면 false를 반환하여 예외 상황을 방지합니다.

 예시

string strNum = "123abc";
int num;
bool success = int.TryParse(strNum, out num);

if (success)
{
    Console.WriteLine("변환 성공: " + num);
}
else
{
    Console.WriteLine("변환 실패");
}
// 출력: 변환 실패



# 5. 박싱(Boxing)과 언박싱(Unboxing)

박싱은 값 타입(Value Type)을 객체 타입으로 변환하는 과정이며, 언박싱은 그 반대의 과정입니다.

 예시

int num = 123;
object obj = num;  // 박싱
int unboxedNum = (int)obj;  // 언박싱




# 결론
C#에서 데이터 형변환은 여러 방식으로 이루어질 수 있으며, 상황에 따라 가장 적절한 방법을 선택해야 합니다. 
- 암시적 형변환은 안전하고 자동으로 이루어지며, 명시적 형변환은 데이터 손실의 위험이 있을 때 개발자가 직접 수행합니다.
- Convert와 Parse 같은 메서드는 문자열을 숫자나 다른 타입으로 변환할 때 유용하며, TryParse는 안전한 변환을 위해 사용됩니다. 
- 마지막으로, 박싱과 언박싱은 값 타입과 참조 타입 간의 변환을 이해하는 데 중요한 개념입니다. 

이러한 변환 방식을 잘 활용하면 데이터 타입 간의 호환성과 변환을 효율적으로 처리할 수 있습니다.

 

 

 

감사합니다.

 

 

 

(chat gpt 참고)

728x90