Notice
Link
반응형
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
관리 메뉴

MyCodeStory

[C#] Type Conversion 형 변환 본문

언어/C# .NET

[C#] Type Conversion 형 변환

Code0Kim 2025. 3. 28. 01:16
반응형

🔹 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