산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 타입 변환 마스터하기: 암시적, 명시적, Parse, Convert 메서드

C# 타입 변환 완벽 가이드

C#에서 데이터 타입 간 변환—암시적/명시적 캐스팅부터 강력한 Parse와 Convert API까지—명확한 예제와 모범 사례를 통해 익혀보세요.

타입 변환—한 데이터 타입의 값을 다른 타입으로 변경하는 것—은 C#의 핵심 기술입니다. 각 변환 방식을 언제, 어떻게 사용해야 하는지 알면 안전하고 효율적인 코드를 작성할 수 있습니다.

C#에서 변환은 크게 두 가지 범주로 나뉩니다:

  1. 암시적 타입 변환(Implicit Type Conversions)
  2. 명시적 타입 변환(Explicit Type Conversions, 캐스팅)

1. C# 암시적 타입 변환

데이터 손실이 발생하지 않을 때 컴파일러가 자동으로 수행하는 변환입니다. 별도 문법 없이 안전하게 이뤄집니다.

대표적인 시나리오는 더 작은 숫자 타입을 더 큰 타입으로 변환하는 경우입니다(예: int → double). 값이 잘림 없이 표현될 수 있기 때문입니다.

예제: 암시적 타입 변환

using System;
namespace MyApplication {
    class Program {
        static void Main(string[] args) {
            int numInt = 500;
            // 암시적 변환
            double numDouble = numInt;
            Console.WriteLine($"numInt value: {numInt}");
            Console.WriteLine($"numInt Type: {numInt.GetType()}");
            Console.WriteLine($"numDouble value: {numDouble}");
            Console.WriteLine($"numDouble Type: {numDouble.GetType()}");
            Console.ReadLine();
        }
    }
}

실행 결과

numInt value: 500
numInt Type: System.Int32
numDouble value: 500
numDouble Type: System.Double

double이 더 큰 용량을 가지므로, 컴파일러는 오버플로 위험 없이 int 값을 안전하게 승격시킵니다.

참고: 암시적 변환은 데이터 손실이 없지만, 결과 타입의 크기는 커집니다.


2. C# 명시적 타입 변환(캐스팅)

더 큰 타입에서 더 작은 타입으로, 또는 관련 없는 타입 간 변환 시 사용합니다. 개발자가 의도를 명시해야 하며, 데이터 손실 가능성이 있으면 컴파일러가 경고합니다.

예제: 명시적 타입 변환

using System;
namespace MyApplication {
    class Program {
        static void Main(string[] args) {
            double numDouble = 1.23;
            int numInt = (int)numDouble; // 명시적 캐스팅
            Console.WriteLine($"Original double Value: {numDouble}");
            Console.WriteLine($"Converted int Value: {numInt}");
            Console.ReadLine();
        }
    }
}

실행 결과

Original double value: 1.23
Converted int value: 1

소수 부분이 잘려 1.23이 1이 되었습니다. 정밀도가 중요하다면 캐스팅 전 반올림 메서드 사용을 고려하세요.

참고: 캐스팅은 '타입 캐스팅(Type Casting)'이라고도 부릅니다.


3. Parse()로 문자열 변환

string을 숫자 타입으로 변환할 때 int.Parse, double.Parse 등을 사용하면 직관적이고 타입 안전합니다.

예제: int.Parse 사용

using System;
namespace Conversion {
    class Program {
        static void Main(string[] args) {
            string n = "100";
            int a = int.Parse(n);
            Console.WriteLine($"Original string value: {n}");
            Console.WriteLine($"Converted int value: {a}");
            Console.ReadLine();
        }
    }
}

실행 결과

Original string value: 100
Converted int value: 100

숫자가 아닌 문자열(예: "test")을 파싱하면 FormatException이 발생합니다. 실무 코드에서는 try-catch로 감싸거나 int.TryParse를 사용해 우아하게 예외를 처리하세요.


4. Convert 클래스

정적 Convert 클래스는 다양한 타입 간 변환 메서드를 제공하며, 내부적으로 필요한 검사를 수행합니다.

메서드설명
ToBoolean()bool로 변환
ToChar()char로 변환
ToDouble()double로 변환
ToInt16()16비트 int로 변환
ToString()string으로 변환

자주 쓰이는 변환 예제를 소개합니다.

예제: int → string, double

using System;
namespace Conversion {
    class Program {
        static void Main(string[] args) {
            int num = 100;
            Console.WriteLine($"int value: {num}");
            string str = Convert.ToString(num);
            Console.WriteLine($"string value: {str}");
            double dbl = Convert.ToDouble(num);
            Console.WriteLine($"Double value: {dbl}");
            Console.ReadLine();
        }
    }
}

실행 결과

int value: 100
string value: 100
Double value: 100

예제: string ↔ double

using System;
namespace Conversion {
    class Program {
        static void Main(string[] args) {
            string str = "99.99";
            Console.WriteLine($"Original string value: {str}");
            double dbl = Convert.ToDouble(str);
            Console.WriteLine($"Converted Double value: {dbl}");
            double num = 88.9;
            Console.WriteLine($"Original double value: {num}");
            string newStr = Convert.ToString(num);
            Console.WriteLine($"Converted string value: {newStr}");
            Console.ReadLine();
        }
    }
}

실행 결과

Original string value: 99.99
Converted Double value: 99.99
Original double value: 88.9
Converted string value: 88.9

예제: int → bool

using System;
namespace Conversion {
    class Program {
        static void Main(string[] args) {
            int num1 = 0;
            int num2 = 1;
            bool bool1 = Convert.ToBoolean(num1);
            bool bool2 = Convert.ToBoolean(num2);
            Console.WriteLine($"Boolean value of 0 is: {bool1}");
            Console.WriteLine($"Boolean value of 1 is: {bool2}");
            Console.ReadLine();
        }
    }
}

실행 결과

Boolean value of 0 is: False
Boolean value of 1 is: True

참고: C#에서 0은 false, 0이 아닌 정수는 true로 해석됩니다.


이러한 변환 기법을 마스터하면 타입 안전하면서도 표현력 높은 코드를 작성할 수 있어, 런타임 오류를 줄이고 가독성을 높일 수 있습니다.

C 언어

  1. 파이썬 타입 변환 & 캐스팅 마스터하기: 종합 가이드
  2. Python 숫자, 형 변환, 수학 마스터하기
  3. Java 타입 캐스팅 마스터하기: 자동 형변환부터 명시적 형변환까지
  4. 자바 제네릭 마스터하기: 정렬 단순화와 타입 안전성 강화
  5. ASTM A1018 CS Type B 저탄소강 사양 및 물성 데이터
  6. ASTM A424 Type II 강종 사양 및 성능 데이터
  7. ASTM A424 Type I 강종 주요 물성 및 성능
  8. ASTM A792 CS Type A 강종 – 상세 물성치 및 사양
  9. ASTM A53 Grade A Type E 강관 – 사양 및 주요 특성
  10. ASTM A53 Grade A Type S 강관 – 심리스 강관 사양 및 특성