TIL

[사전캠프 4일차] C# 기초 문법 3

youngjin02 2025. 3. 20. 14:28

오늘도 이어서 기초 문법에 대해 공부해보겠다.

1. if else 와 swith 중 어떤 것을 사용해야 될까?

if else 문은 bool 의 결과 값에 따라 true, false 두 가지로 나뉘고, else 를 중첩시키면 여러 가지 조건을 만들 수 있다.

switch 문은 변수를 입력 받아서 미리 정해놓은 값들과 비교하여 일치하는 case 를 실행시킨다.

 

switch 를 사용할 수 있는 모든 상황에 if else 로 대체 할 수 있다.

하지만 반대로 if else 를 swith 가 전부 대체 할 순 없다.

 

그렇기 때문에 if else 문만 사용하는 게 편하다고 생각했었다.

하지만 가능하다면 switch 문을 사용하는 것이 좋다.

 

왜냐하면, switch 문의 수행시간이 if else 문 보다 훨씬 빠르기 때문이다.

물론 if else 문만 사용한다면 코드를 짜기 편하고 빠를 수도 있다.

하지만, 코드의 최적화를 위해선 if else 문 보다 switch 문을 사용하는 게 더 좋다.

 

따라서 switch 문을 먼저 사용하고 if else 문은 필요한 상황에서만 쓰는 게 좋을 것 같다. 

                                                                                                                                                                      

2. TryParse() 함수에 대하여

코드에 대한 질문을 받았다.

string input = Console.ReadLine();
 int y;
 bool isback;
 isback = int.TryParse(input, out y);
 if(isback)
 {
     Console.WriteLine("숫자");
 }
 else
 {
     Console.WriteLine("문자");
 }

숫자를 기준으로 참 일때 숫자를 출력하고 거짓일 때 문자라고 출력이 되는데,

문자를 기준으로 코드를 작성할 수 있냐는 질문이다.

 

코드를 먼저 살펴보겠다.

먼저 input 에 내가 입력한 값을 string 으로 불러온다.

int 형의 y , bool 형의 isback 변수를 만든다.

TryParse 로 input 이 int 로 변환 할 수 있는지 확인한다.

변환이 된다면 if 문을 실행시키고 변환이 안된다면 else 를 실행한다.

 

무슨 코드인지 이해가 됐다.

받아온 값이 숫자이면 숫자라고 출력을 하고 받아온 값이 숫자가 아니라면 문자라고 출력을 한다.

 

그럼 이걸 문자를 기준으로 코드를 작성할 수 있을까?

내 생각엔 안 될 것 같다.

 

TryParse() 함수는 문자열을 숫자나 bool 같은 다른 자료형으로 변환 시켜주는 함수이다.

TryParse 를 이용하여 문자를 기준으로 코드를 만든다는 것은 문자열을 문자열로 바꾼다는 말이다.

 

그럼 다른 함수를 이용하여 만들어야겠단 생각이 든다.

어떻게 만들까 고민하던 중 떠오른 사실이 있다.

 

문자열은 "안녕", "123" 둘 다 문자이다.

그렇기 때문에 문자를 기준으로 만들면 전부 true 가 되어버린다.

문자를 기준으론 판별이 불가능 할 것 같다.

 

애초에 원래의 코드가,

받아온 값이 숫자면 숫자를 출력하고 아니라면 문자를 출력한 것으로

굳이 문자를 기준으로 코드를 만들 이유도 없다.

 

다양한 생각을 할 수 있었던 좋은 질문이었다.

                                                                                                                                                                      

3. for 문과 while 문의 차이점

for 문은 식 자체에 초기화, 조건, 변화가 전부 있다.

필요한 내용이 전부 있으므로 가장 기본적인 사용 방법이다.

특수한 경우가 아니면 for 문을 사용하는 게 편리하다.

 

while 문은 조건만 체크하는 반복문이다.

초기화변화가 없거나 외부에서 진행할 수 있다.

 

이런 특징 때문에 외부의 조건에 의해 영향을 받을 때 사용한다.

  • 인터넷에서 다운로드를 기다린다.
  • 유저의 인풋을 기다린다.
  • 어떤 유저가 승리하는 것을 기다린다.

  for 문과 while 문의 예제를 풀어본다면 이해하기 쉬울 것 같다.

                                                                                                                                                                      

3. 특정 조건이 없는 반복문을 실행시킨다면?

특정 조건이 없는 반복문을 실행시키면 어떻게 되는지 실험해 보겠다.

int i = 1;
for (; ;)
{
    Console.WriteLine(i);
}

먼저 for 문이다.

for 문 안에 조건을 넣지 않고 실행해 보겠다.

for 문의 실행 내용을 무한히 반복한다.

 

다음은 while 문이다.

조건을 비우니 오류가 발생한다.

while (true)
{
    Console.WriteLine("안녕");
}

주제와는 다르지만 조건에 true 를 넣으면 항상 true 이므로 무한 루프가 발생한다.

do while 문도 while 문과 동일하다.