스파르타 코딩클럽의 내일배움캠프에 지원하게 되어 4개월간 Unity 교육을 받게 되었다.
Unity 엔진에서 주로 다루는 C# 코드 뿐만 아니라 C++ 과는 다른 문법 등이 있을 때마다 정리해야겠다.
24-03-18
첫 OT 가 끝나고, 남은 시간동안 내배캠에서 지원하는 C# 사전 문법 기초 를 공부할 수 있는 시간이 주어졌다.
C++ 과는 다르게 빈 프로젝트가 아닌 콘솔 앱 을 선택해서 프로젝트를 생성한다.
최상위 문 사용 안 함을 체크한 뒤, 만들기를 진행하면 다음과 같은 코드가 자동으로 생성된다.
namespace FirstProgram // 프로젝트 이름
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
반면, 기본 값인 체크 안함으로 만들기를 진행하면 훨씬 간결한 코드가 생성된다.
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
둘 다 같은 프로그램을 나타내고, 최상위 문 사용 안함 을 통해 작성해야 하는 코드를 간소화하는 기능이라고 한다.
C# 기초 문법에 이 부분에 대한 내용은 나와있지 않지만, 궁금해서 구글링해보았다.
.NET 환경의 컴파일 과정
Dotnet 8 - Native AOT
매우 친절하게 설명되어 있지만, 아직 해독하긴 어려워보여 링크를 남겨두고 컴파일러를 공부하고 다시 읽어봐야겠다.
본 내일배움캠프에서는 둘다 체크 안 함으로 사용하면 될 것 같다.
C++ 과는 다르거나 처음 본 코드 위주로 작성하였다.
string name;
string s_age;
Console.WriteLine("Hello, World!");
name = Console.ReadLine();
s_age = Console.ReadLine();
Console.WriteLine("이름은 " + name + ", 나이는 " + s_age);
Console.WriteLine()의 경우, 입력 받은 문자열을 화면에 출력한 뒤, 자동으로 줄바꿈을 실행한다.
Console.ReadLine() 의 경우, 사용자에게 한 줄을 입력받아 문자열 형식으로 반환한다.
입력받는 Console.ReadLine() 함수의 경우, 문자열 형식으로 받기 때문에 상황에 따라 형변환이 필요할 것이다.
int 형을 float 형으로 바꾸거나 또는 그 반대 등의 형태는
사용하고 싶은 변수 앞에 변경하고 싶은 변수 앞에 (자료형)을 명시
int x = 10;
float y = 20.0f;
int z = x + (int)y;
float w = (float)x + y;
숫자나 bool 형을 문자로 바꿀 때는 .ToString() 을 사용
int x = 10;
string x_str = x.ToString(); // "10"
float y = 0.5f;
string y_str = y.ToString(); // "0.5"
bool z = true;
string z_str = z.ToString(); // "true"
string iStr = "10";
int x = Convert.ToInt32(iStr); // x = 10
string bStr = "true";
bool b = Convert.ToBoolean(bStr); // b = true
string nStr = null;
int n = Convert.ToInt32(nStr); // n = 0
string eStr = "10.5"; // int형으로 변환될 수 없는 문자열
int e = Convert.ToInt32(eStr); // FormatException
Convert 클래스를 사용해 float 형으로 변환할 때는 Convert.ToSingle() 을 사용한다.
string iStr = "10";
int x = int.Parse(iStr); // x = 10
string bStr = "true";
bool b = bool.Parse(bStr); // b = true
string nStr = null;
int n = int.Parse(nStr); // ArgumentNullException
string eStr = "10.5";
int e = int.Parse(eStr); // FormatException
bool result;
string iStr = "10";
int x;
result = int.TryParse(iStr, out x); // result = true, x = 10
string bStr = "true";
bool b;
result = bool.TryParse(bStr, out b); // result = true, b = true
string nStr = null;
int n;
result = int.TryParse(nStr, out n); // result = false, n = 0
string eStr = "10.5";
int e;
result = int.TryParse(eStr, out e); // result = false, e = 0
상황에 맞게 Convert, Parse, TryParse 를 쓰면 좋겠지만, 형변환에 익숙해질 때까지는 TryParse 함수를 쓰는게 좋을 것 같다.
| 형 변환 | Convert | Parse |
|---|---|---|
| null 값이 할당된 string -> int 변환 | 0 반환 | ArgumentNullException 예외 |
| Char -> int 변환 | ASCII 코드로 변경되어 변환 | 변환 불가능 |
변수의 선언 ~ 형변환 연습 문제
// 1 ~ 2. 변수 선언 및 초기화
{
int lv = 1;
int cnt = 1;
float p = 0.1f;
float speed = 5.0f;
string nickname = "Kim";
string info = "male";
}
// 3 ~ 5. 형변환
{
// 숫자 -> 숫자
int iTen = 10;
float fTen = (float)iTen;
float fFive = 5.5f;
int iFive = (int)fFive;
// 숫자 -> 문자
int n = 10;
string nStr = n.ToString();
float f = 0.5f;
string fStr = f.ToString();
// 문자 -> 숫자
bool result;
string strTen = "10";
int convert_Ten = Convert.ToInt32(strTen);
int parse_Ten = int.Parse(strTen);
int try_parse_Ten;
result = int.TryParse(strTen, out try_parse_Ten);
string strSix = "6.2";
float convert_Six = Convert.ToSingle(strTen);
float parse_Six = float.Parse(strTen);
float try_parse_Six;
result = float.TryParse(strTen, out try_parse_Six);
}