Input (입력)
stirng Input = Console.ReadLine();
콘솔에서 입력을 받기위해서는 Console.ReadLine()함수를 사용한다.
이 함수는 항상 string을 return하기 때문에 입력 받은 값을 원하는 자료형으로 형 변환
해주어야 한다.
형 변환 number to number
형 변환을 하고싶은 변수 앞에 괄호에 자료형을 명시한다.
C# 에서는 숫자 자료형간의 연산을 수행할때 명시하지 않더라도 암시적 형 변환
된다.
int x = 10;
float y = 10.1f;
float z = x + y; // x가 암시적으로 int -> float로 형변환 된다.
하지만 자동으로 형 변환을 했을때 값이 누락
될수 있는 경우에는 암시적 형 변환이 불가능하고 명시적 형 변환
즉 , 강제 형 변환
을 해주어야 한다.
이렇게 강제 형 변환
을 하면 데이터가 손실될수 있다.
int x = 10;
float y = 10.5f;
int z = x + (int)y; // 강제 형 변환을 하며 y의 값이 손실
Console.WriteLine(z); // 20출력
String으로 형 변환
문자가 아닌 자료형을 문자로 바꾸는 방법 .ToString() 함수를 통해서 변환할 수 있다
int x = 10;
float y = 10.5f;
bool myBool = true;
string temp = x.ToString();
Console.WriteLine(temp); // 10출력
temp = y.ToString();
Console.WriteLine(temp); // 10.5출력
temp = myBool.ToString();
Console.WriteLine(temp); // true 출력
String을 형 변환
문자를 다른 자료형으로 바꾸는 방식은 대표적으로 3가지 방법이 존재한다.
- Convert 클래스 이용
- Parse() 함수 이용
- TryParse() 함수 이용
Convert()
string str = "10";
int x = Convert.ToInt32(str);
str = "true";
bool b = Convert.ToBoolean(str);
Parse()
string str = "10";
int x = int.Parse(str);
str = "true";
bool b = bool.Parse(str);
Convert 클래스와 Parse() 함수를 이용하면 변환한 값을 바로 리턴 받을수 있습니다. 하지만 변환할 수 없는 값일 경우 문제
가 생깁니다.
string str = "10xxx";
int x = Convert.ToInt32(str); // 10xxx 는 int로 변환할 수 없기 때문에 에러
str = "testtest";
bool b = bool.Parse(str); // testtest는 bool로 변환할 수 없기 떄문에 에러
TryParse()
위와 같이 변환하고자 하는 string이 정확히 어떤형태 인지 모르는 상황
에서는 Conver나 Parse()를 사용하면 에러가 발생할 수 있다.
이때 TryParse()
함수를 사용하여 에러 발생을 방지할 수 있다.
string str = "10";
int x;
bool isSuccess = int.TryParse(str, out x); // isSuccess = true
str = "testtest"
bool b;
isSuccess = bool.TryParse(str, out b); // isSuccess = false
TryParse() 함수는 성공여부를 bool
으로 return
하고
out
을 통해서 결과 값을 반환한다.