1. 타입 변환이 왜 필요할까?
C#은 엄격하게 타입을 따지는 언어야. 만약 컴퓨터에 숫자를 위한 "상자"가 있는데, 거기에 텍스트를 넣으려고 하면, 이건 마치 포크를 USB 포트에 꽂으려는 거랑 똑같아. 컴파일러가 절대 용서 안 해! 😡
근데 실제로는 여러 데이터 타입을 동시에 다루는 일이 많아. 예를 들어, 숫자가 들어있는 문자열이 있을 때가 있지. 이럴 때 변환(혹은 변형)이 필요해.
예시를 보자. 예를 들어, 사용자 수를 저장하고 싶다고 해보자:
int a = 1;
int b = "2";
int c = "세";
컴파일러가 바로 말할 거야: "나를 뭘로 보는 거야? 내가 문자열을 숫자로 자동으로 바꿀 줄 몰라, 네가 직접 해줘야 해. 문자열을 숫자로 명시적으로 바꿔야 해".
C#에는 여러 가지 변환 방법이 있고, 각각 장단점이랑 흔히 하는 실수들이 있어.
2. int를 string으로 변환하기
실제로 작업하다 보면 숫자를 문자열로 바꿔야 할 때가 많아: 예를 들어, 화면에 출력하거나, 파일에 저장하거나, 네트워크로 보내거나, 텍스트랑 합치거나 등등. C#에는 이런 걸 위한 여러 방법이 있고, 상황에 따라 편한 걸 쓰면 돼.
ToString() 함수
이게 기본이자 제일 많이 쓰는 방법이야:
int number = 42;
string str = number.ToString(); // str == "42"
ToString()은 숫자를 그 타입에 맞는 기본 문자열로 바꿔줘.
문자열 보간 ($"...")
요즘 방식이고, 변수랑 같이 문자열 만들 때 진짜 편해:
int number = 42;
string str = $"숫자: {number}";
문자열 보간은 자동으로 ToString()을 호출해서 값 넣어줘.
여러 변수도 넣을 수 있고, 포맷도 지정할 수 있어:
int number = 42;
string str = $"{number:D5}"; // "00042" — 다섯 자리, 앞에 0 채움
빈 문자열이랑 더하기
좀 옛날 방식이지만 잘 돼:
int number = 42;
string str = number + "";
간단한 경우엔 빠르고 괜찮은데, 코드를 읽는 사람 입장에선 좀 덜 명확할 수 있어.
3. 문자열로의 암시적 변환
아까도 말했지만, C# 개발자들이 모든 변수, 객체, 표현식을 string으로 변환할 수 있게 해놨어.
게다가 string 타입이랑 다른 타입을 더하면 자동으로 변환돼. 예시:
int a = 5;
string name = "아냐" + a; // name은 "아냐5"라는 문자열을 가짐
int a = 5;
string city = a + "뉴욕" + a; // city는 "5뉴욕5"라는 문자열을 가짐
int number = 10;
string code = "요";
string message = "안녕! " + number + code; // message는 "안녕! 10요"라는 문자열을 가짐
이 세 예시 모두 int랑 string을 그냥 더했는데, 결과는 항상 string이야.
예시:
int a = 5;
string name = "1" + a; // name은 "15"라는 문자열을 가짐
int a = 5;
string city = a + "9" + a; // city는 "595"라는 문자열을 가짐
int number = 10;
string code = "10";
string message = "" + number + code; // message는 "1010"이라는 문자열을 가짐
더하기 연산은 왼쪽에서 오른쪽으로 진행돼서, 결과가 좀 예상 밖일 수도 있어. 예시:
int a = 5;
string name = a + a + "1" + a; // name은 "1015"라는 문자열을 가짐
실행 순서: ((a + a) + "1") + a
4. 문자열을 숫자로 변환하기
C#에서 숫자를 문자열로 바꾸려면, 그냥 숫자랑 빈 문자열을 더하면 돼:
string str = "" + 숫자;
근데 만약 문자열을 숫자로 바꿔야 하면? 모든 문자열을 숫자로 바꿀 순 없어. 근데 문자열이 숫자만 있으면 가능해. int 타입에는 Parse()라는 특별한 함수가 있어.
이렇게 써:
int x = int.Parse("문자열")
여기서 int x는 정수형 변수 x를 선언하는 거고, 문자열은 숫자로만 이루어진 문자열(숫자 형태의 문자열)이야.
예시:
string str = "123";
int number1 = int.Parse(str); // number1은 123이라는 숫자를 가짐;
int number2 = int.Parse("321"); // number2는 321이라는 숫자를 가짐
int number3 = int.Parse("321" + 0); // number3은 3210이라는 숫자를 가짐
int number4 = "321"; // 컴파일 안 됨: int 타입 변수에 string 값을 넣으려 했음
음수도 잘 돼: int.Parse() 함수가 꽤 똑똑하거든.
GO TO FULL VERSION