안녕하세요 인터럽트입니다.
이번 포스팅에서는 C#에서 형변환 하는 법과 각 방법들의 특징들을 비교해서 정리하겠습니다.
형변환 정리 Cast/as/is 비교
형변환정리
형변환이란 변수나 데이터의 자료형을 다른 자료형으로 변환하는 것을 의미합니다. 프로그래밍 언어에서는 데이터를 추리하거나 계산하기 위해 서로 다른 자료형 간에 형변환을 하는 경우가 많습니다. 이를 통해 원하는 형태로 변환하거나 연산을 수행할 수 있습니다.
형변환에는 암시적 형변환(Implicit Casting)과 명시적 형변환(Explicit Casting)으로 나눌 수 있습니다.
1. 암시적 형변환 (Implicit Casting)
언어가 자동으로 형변환을 수행하는 것을 의미합니다. 예를 들어 정수와 실수를 연산할 때 몇몇 언어는 자동으로 정수를 실수로 형변환하여 연산을 수행하는데 이러한 형변환을 암시적 형변환이라고 합니다.
1
2
3
4
|
//프로그래밍 언어가 자동으로 정수형을 실수형으로 형변환하여 연산함
int t1 = 10;
double t2 = 3.14;
console.write(t1 * t2); //output : 31.4
|
cs |
2. 명시적 형변환 (Explicit Casting)
개발자가 직접 형변환을 지정하는 것을 의미합니다.
1
2
3
4
|
//개발자가 직접 형변환을 지정하는 것을 의미합니다.
int t1 = 10;
double t2 = 3.14;
console.write((double)t1 * t2); //output : 31.4
|
cs |
형변환 방법
C#에서는 명시적 형변환을 위해 몇 가지 방법을 제공합니다.
1. 명시적 형변환(Casting Operator)
C#에서는 다른 자료형으로 명시적 형변환을 위해 캐스팅 연산자를 사용합니다. 캐스팅 연산자는 원하는 자료형을 괄호 안에 명시해서 사용할 수 있습니다.
1
2
3
|
//int를 double로 명시적 형변환, 실패하면 예외발생
int intValue = 10;
double doubleValue = (double)intValule;
|
cs |
2. Convert 클래스 사용
C#의 Convert 클래스는 다양한 데이터 형식 간의 형변환을 제공합니다.
1
2
3
|
//문자열을 날짜 형식으로 형변환, 실패하면 예외발생
string stringValue = '2023-07-26';
DateTime dateValue = Convert.ToDateTime(stringValue);
|
cs |
3.Parse 메서드
문자열을 기본 데이터 형식으로 변환하는 데 사용합니다. (int, double, bool 등)
Convert와 비슷하지만 파싱은 더 간한단 형태의 데이터만 변환 가능합니다.
1
2
3
|
//문자열을 double로 형변환, 실패하면 예외발생
string stringValue = "3.14";
double doubleValue = double.Parse(stringValue);
|
cs |
4. TryParse 메서드
Parse와 비슷하지만 변환 실패 시 예외가 발생하지 않고 성공 여부를 bool값으로 반환합니다.
변환에 성공하면 true, 실패하면 false를 반환합니다.
1
2
3
4
5
|
//문자열을 int로 변환하여 intValue에 담고, 성공여부를 result변수에 저장합니다.
//성공,실패여부를 bool형식으로 return하기 때문에 예외 발생안함
string stringValue = "123";
int intValue;
bool result = int.tryParse(stringValue, out intValue);
|
cs |
5. as 연산자
as연산자는 참조 형식의 형변환에 사용합니다.
참조형식이 일치하지 않을 경우 null을 반환하며, 예외를 발생시키지 않습니다.
as연산자는 형변환을 시도하며 형변환이 실패하면 null을 반환합니다.
1
2
3
|
//string형식을 int형식으로 변환, 형변환 실패해도 예외발생안함
string stringValue = "123";
int intValue = stringValue as int;
|
cs |
6. is연산자
is연산자는 주어진 객체가 특정 형식과 호환되는지 검사합니다. is연산자를 사용하여 형변환을 시도하기 전에 객체가 원하는 형식과 호환되는지 먼저 확인할 수 있습니다.
is연산자는 bool값을 반환하며 호환하면 true 아니면 false를 반환합니다.
정리
- 1, 2번은 넓은 범위의 형변환이 가능하나 예외가 발생함
- 3번은 기본형변환만 가능하고 예외가 발생함
- 4번은 기본형변환만 가능하고 예외가 발생안함
가급적 예외발생을 고려해서 Parse보다는 TryParse를 사용하는 것을 권장합니다. - 5, 6번은 넓은 범위의 형변환이 가능하고 예외가 발생안함
상황에 맞게 형변환 방식을 선택해서 사용하시면 될 것 같습니다.
읽어주셔서 감사합니다.
