[TIL] 2일 차 - C# 기초 문법 공부

ChangBeom·2025년 1월 23일

TIL

목록 보기
3/53
post-thumbnail

저는 컴퓨터공학을 전공해서 여러 프로그래밍 언어를 접해봤고, C#과 어느정도 유사한 C++을 주로 사용해왔습니다. 게다가C#도 사용해본 경험이 있습니다. 그래도 다시 한번 기초를 다지고 C# 문법에 더욱더 익숙해지고자 오늘은 C#의 기초 문법에 대해 공부해보겠습니다!


[1. 콘솔창에 출력하기]

C++에서 콘솔창에 Hello, World!를 출력하려면 아래와 같이 작성한다.

Cout << "Hello, World!;

실행 결과)
Hello, World!

그러나 C#에서는 System namespace에 존재하는 Console 클래스의 Write() 함수 또는 WirteLine() 함수를 사용한다. Wirte() 와 WriteLine() 의 차이는 줄 바꿈 여부의 차이이다.

Console.WriteLine("Hello, World");
Console.Write("Hello, World");

실행 결과)
Hello, World!
Hello, World!

첫째 줄에 Console.WriteLine() 를 사용했기 때문에 줄 바꿈이 일어나 각자 다른 줄에 출력되는 것을 확인 할 수 있다. 물론 문자열뿐만 아니라 숫자와 연산값도 출력할 수 있다.

Console.WriteLine(1);
Console.WriteLine(2+3);
Console.Write(4*5);

실행 결과)
1
5
20


[2. 형변환 (Type Casting)]

1. 숫자끼리의 타입 캐스팅은 형변환할 변수 앞에 괄호로 변수형을 명시해주면 된다.

ex) float -> int

int x = 10;
float y = 10.0f;

int z = x + (int)y;

2. 다른 자료형에서 string 타입으로의 형변환은 뒤에 .ToString()을 붙이면 된다.

ex) int -> string

int x = 10;
string xStr = x.ToString(); // "10"

ex) float -> string

int y = 10.5f;
string yStr = y.ToString(); // "10.5"

ex) float -> string

int myBool = true;
string boolStr = myBool.ToString(); // "true"

3. 문자에서 다른 자료형으로 형변환할 때는 여러가지 방법이 존재한다.

  • Convert 클래스 이용
  • Parse() 함수 이용
  • TryParse() 함수 이용

<Convert 클래스 이용>

Convert 클래스를 통해 각각의 자료형으로 변환하는 방법이다.

ex) string -> int

string iStr = "10";
int x;
x = Convert.ToInt32(iStr); // x : 10

ex) string -> bool

string bStr = "true";
bool b;
b = Convert.ToBoolean(bStr); // b : true

<Parse() 함수 사용>

ex) string -> int

string iStr = "10";
int x;
x = int.Parse(iStr); // x : 10

ex) string -> bool

string bStr = "true";
bool b;
b = bool.Parse(bStr); // b : true

Convert와 Parse()를 이용한 형변환은 형변환할 수 없는 값을 형변환 하려고 할때 에러가 발생한다.

ex) string -> int

string iStr = "10xxxx";
int x;
x = int.Parse(iStr); // x : ???? 에러 발생

ex) string -> bool

string bStr = "testtset";
bool b;
b = bool.Parse(bStr); // b : ???? 에러 발생

따라서 위와 같은 상황에 대처하기 위해 TryParse()라는 함수가 존재한다.

<TryParse() 함수 사용>

ex) string -> int

string iStr = "10";
int x;
bool isSuccess;
isSuccess = int.TryParse(iStr, out x); // isSuccess : true

ex) string -> bool

string bStr = "testtset";
bool isSuccess;
isSuccess = bool.TryParse(bStr, out b); // isSuccess : false

기존 방법과 다른 점은 반환값으로 캐스팅한 값이 아니라 bool 타입 값을 받아 형변환이 성공했는지 유무를 알려준다.


[3. 비트 연산]

기호사용법설명이름
&a&ba와 b비트가 일치하는것을 계산And 연산자
|a|ba와 b비트 중 하나만 일치해도 계산Or연산자
^a^ba와 b비트가 다른것만 계산Xor 연산자
<<a<<ba의 비트를 왼쪽으로 b만큼 이동시프트 연산자
>>a>>ba의 비트를 오른쪽으로 b만큼 이동시프트 연산자

비트연산은 복잡한 계산을 최적화할 때 사용합니다. 한가지 예를 들면 시프트 연산은 2의 거듭제곱수에 대한 곱셈과 나눗셈을 최적화할 때 사용할 수 있습니다.

  • 곱셈 : x << nx * 2^n과 동일
  • 나눗셈 : x >> nx / 2^n과 동일

[4. do-while 문]

자주 사용하지 않는 만큼 가끔 까먹는 문법이라서 다시 한번 되새기고자 한다.

<구성>

do
{
	// 실행 내용
}
while(조건);

do-while문의 가장 큰 특징은 조건과 상관없이 일단 실행 내용을 한번 실행한 후 이후 조건에 따라 반복하는 것이다.

int i = 999;

do
{
	Console.WriteLine(i);
    i++;
}
while(i <= 10);

실행 결과)
999

위와 같이 조건이 i가 10보다 작거나 같을 때 반복이고 i가 999로 초기화 되어 있어도, 일단 한번은 실행되기 때문에 999가 출력되는 것을 확인할 수 있다.


[5. 배열]

<선언과 생성>

string[] game = new string[3];
string[] game = {"lol", "maplestroy", "darksoul"};

위와 같이 선언하고 생성할 수 있다.
2번째 줄 같이 바로 초기화를 하면 데이터의 개수가 곧 배열의 크기가 된다.

  • C++과 같이 string game[3]; 같은 문법으로 선언 및 생성이 불가능 하니 주의하자!

[6. foreach문]

foreach문은 배열을 순회할 때 for문 대신 사용하는 문법이다.

<구성>

foreach(변수타입 반복변수 in 배열)
{
	// 실행 내용
}

조건식을 쓰지 않고 해당 배열의 처음부터 끝까지 순회할 때 사용하는 방식이다.

string[] games = new string[3] {"lol", "maplestory", "darksoul"};

foreach(string game in games)
{
	Console.WriteLine(game);
}

실행 결과)
lol
maplestory
darksoul

  • 지정할 반복변수의 타입은 배열의 타입과 일치해야 한다는 점을 주의하자!

0개의 댓글