MyCodeStory
[C#] Type Conversion 형 변환 본문
반응형
🔹 1. 암시적 형 변환 (Implicit Conversion)
✔️ 작은 범위의 자료형 → 큰 범위의 자료형으로 변환할 때 자동으로 이루어짐
✔️ 데이터 손실이 없기 때문에 안전함
✔️ byte → short → int → long → float → double 순서로 변환 가능
✅ 예제: 암시적 형 변환
using System;
class Program
{
static void Main()
{
int num = 10;
double dNum = num; // int → double 자동 변환
Console.WriteLine(dNum); // 출력: 10
}
}
📌 int는 double보다 작은 범위이므로 자동 변환됨!
🔹2. 명시적 형 변환 (Explicit Conversion)
✔️ 큰 범위의 자료형 → 작은 범위의 자료형으로 변환할 때 사용
✔️ 데이터 손실이 발생할 수 있음
✔️ (자료형) 값 형태로 변환 (캐스팅)
✅ 예제: 명시적 형 변환 (캐스팅)
using System;
class Program
{
static void Main()
{
double dNum = 9.99;
int num = (int)dNum; // double → int 강제 변환 (소수점 손실 발생)
Console.WriteLine(num); // 출력: 9
}
}
📌 double을 int로 변환하면서 소수점 이하가 버려짐!
🔹 3. Convert 클래스 활용
✔️ Convert.ToInt32(), Convert.ToDouble() 같은 메서드를 사용하면 변환 가능
✔️ 문자열 → 숫자 변환도 가능
✅ 예제: Convert 클래스 사용
using System;
class Program
{
static void Main()
{
string str = "123";
int num = Convert.ToInt32(str); // 문자열 → 정수 변환
Console.WriteLine(num + 10); // 출력: 133
}
}
📌 "123" 문자열을 int로 변환한 후 연산이 가능해짐!
🔹 4. Parse() 메서드 활용
✔️ int.Parse(), double.Parse() 같은 메서드를 사용하여 문자열을 변환
✔️ 변환할 문자열이 숫자가 아닌 경우 오류 발생
✅ 예제: Parse() 사용
using System;
class Program
{
static void Main()
{
string strNum = "3.14";
double num = double.Parse(strNum); // 문자열 → 실수 변환
Console.WriteLine(num * 2); // 출력: 6.28
}
}
📌 "3.14"를 double로 변환 후 계산 가능!
🔹 5. TryParse() 메서드 활용
✔️ 변환이 가능한지 확인 후 변환 (실패 시 기본값 유지)
✔️ 변환이 실패하면 오류 없이 false 반환
✅ 예제: TryParse() 사용
using System;
class Program
{
static void Main()
{
string input = "abc"; // 숫자가 아닌 문자열
int number;
bool success = int.TryParse(input, out number); // 변환 시도
if (success)
Console.WriteLine("변환 성공: " + number);
else
Console.WriteLine("변환 실패!"); // 출력: 변환 실패!
}
}
📌 "abc"는 숫자가 아니므로 변환 실패! TryParse()를 쓰면 오류 없이 처리 가능
🔹 6. 박싱(Boxing) & 언박싱(Unboxing)
✔️ 박싱(Boxing): 값 형식을 object 타입으로 변환
✔️ 언박싱(Unboxing): object 타입을 다시 원래 값 형식으로 변환
✅ 예제: 박싱 & 언박싱
using System;
class Program
{
static void Main()
{
int num = 10;
object obj = num; // 박싱 (int → object)
int newNum = (int)obj; // 언박싱 (object → int)
Console.WriteLine(newNum); // 출력: 10
}
}
📌 박싱은 자동으로 되지만, 언박싱은 명시적 변환이 필요해요!
✅ 정리
변환 방식사용법특징
암시적 변환 | 자동 변환 (int → double) | 안전하지만 작은 → 큰 자료형만 가능 |
명시적 변환 | (자료형)값 | 데이터 손실 가능 (예: double → int) |
Convert | Convert.ToInt32("123") | 문자열 변환 가능, 예외 발생 가능 |
Parse | int.Parse("123") | 문자열 변환, 예외 발생 가능 |
TryParse | int.TryParse("123", out num) | 변환 실패 시 오류 없이 처리 |
박싱 & 언박싱 | object obj = num; int n = (int)obj; | 객체 형식으로 변환 후 다시 값 형식으로 변환 |
반응형
'언어 > C# .NET' 카테고리의 다른 글
[C#] foreach 문 (0) | 2025.03.29 |
---|---|
[C#] for문과 while문의 차이점 (0) | 2025.03.29 |
[C#] While 문 (0) | 2025.03.28 |
[C#] Switch 문 (0) | 2025.03.28 |
[C#] For 문 (0) | 2025.03.28 |