변수를 사용할때 사용하고 있는 자료의 형태를 변환 해야할 일이 있습니다.
예) string → int, string → bool
여러가지의 자료형이 있는 만큼 다양한 상황에서의 현 변환이 있지만 그중 가장 많이 사용하고 기본적인 3가지를 공유합니다.
•
숫자를 다른 형태의 숫자로 변환
•
다른 자료형을 문자로 변환
•
문자를 다른 자료형으로 변환
1. 숫자 → 숫자 (int, float)
숫자를 다를 숫자의 형태로 바꾸는 방법입니다.
실제로 숫자의 자료형은 더 많지만 가장 기본적인 int 랑 float 만 확인해 봅니다.
float → int
int x = 10;
float y = 10.0f;
int z = x + (int)y; // 사용하고 싶은 변수 앞에 변경하고 싶은 괄호하고 자료형 명시
C#
복사
int → float
int x = 10;
float y = 10.0f;
float z = (float)x + y; // 사용하고 싶은 변수 앞에 변경하고 싶은 괄호하고 자료형 명시
C#
복사
고급 내용
2. 다른 자료형 → 문자
숫자나 bool 을 문자로 바꾸는 방법입니다.
간단하게 뒤에 .ToString()을 붙이면 변환할 수 있습니다.
int x = 10;
string xStr = x.ToString(); // "10"
float y = 10.5f;
string yStr = y.ToString(); // "10.5"
bool myBool = true;
string boolStr = myBool.ToString(); // "true"
C#
복사
3. 문자 → 다른 자료형
문자를 다른 다료형으로 바꾸는 방식은 조금 복잡하고 다양합니다.
대표적으로 3가지 방법이 존재합니다.
•
Convert 클래스 이용
•
Parse() 함수 이용
•
TryParse() 함수 이용
Convert 이용
Convert 를 이용하여 각각의 자료형으로 변환하는 방법입니다.
string iStr = "10";
int x;
x = Convert.ToInt32(iStr); // x : 10
string bStr = "true";
bool b;
b = Convert.ToBoolean(bStr); // b : true
C#
복사
형변환 리스트
Parse() 함수 사용
string iStr = "10";
int x;
x = int.Parse(iStr); // x : 10
string bStr = "true";
bool b;
b = bool.Parse(bStr); // b : true
C#
복사
에러 발생
Convert 와 Parse() 함수를 이용하면 변환한 값을 받아올 수 있습니다.
문제는 변환할 수 없는 값일때 문제가 생깁니다.
string iStr = "10xxxx";
int x;
x = Convert.ToInt32(iStr); // x : ??? 에러 발생
string bStr = "testtest";
bool b;
b = bool.Parse(bStr); // b : ???? 에러 발생
C#
복사
TryParse() 함수 사용 ★ 중요
위와 같은 의도하지 않은 상황에 대처하기 위해 TryParse 가 있습니다.
out 개념이 들어가는데 어려운 개념이므로 이후 메모리 부분을 확인해주세요.
어떻게하면 사용할수 있는지 모양만 봐주세요.
string iStr = "10";
int x;
int.TryParse(iStr, out x); // x : 10
string bStr = "true";
bool b;
bool.TryParse(bStr, out b); // b : true
C#
복사
기존 방법과 다른 점은 반환값으로 캐스팅한 값을 받지 않습니다.
반환값은 bool 만 받으며 캐스팅이 성공했는지 알려줍니다.
변환된 데이터는 out 키워드 뒤에 있는 변수에 저장됩니다.
string iStr = "10"; // int 로 변활 할 수 있으니 성공
int x;
bool isSuccess;
isSuccess = int.TryParse(iStr, out x); // isSuccess : true
Console.WriteLine(x); // x : 10
C#
복사
string bStr = "false"; // bool 로 변활 할 수 있으니 성공
bool b;
bool isSuccess;
isSuccess = Boolean.TryParse(bStr, out b); // isSuccess : true - 캐스팅이 성공했는지 여부
Console.WriteLine(b); // b : false - 캐스팅이 완료된 데이터
C#
복사