개발 TIL

내일배움캠프 6일차 TIL C#배운내용 및 Tip

yun-wj1126 2025. 1. 27. 21:14

Console.Write Console.WriteLine과 다르게 줄을 바꾸지 않는다.


식별자 표기법에 카멜 표기법, 파스칼 표기법, 스네이크 표기법, 헝가리안 표기법 등등이 있는데 카멜과 파스칼만 알고있으니 2가지만 말하겠다.

PascalCase : 클래스, 메서드, 프로퍼티 이름 등에 사용됨

단어의 첫글자는 대문자로 시작하고, 이후 단어의 첫 글자도 대문자로 표기

예시) UnityGame

 

camelCase : 변수, 매개변수, 로컬 변수 이름 등에 사용됨

단어의 첫 글자를 소문자, 이후 단어의 첫 글자는 대문자로 표기

예시) unityGame


 

char input = Console.ReadLine()[0];

이렇게 입력시에 []안에 있는 숫자에 따라 그 글자만 가져온다.

0이면 맨처음 글자 1이면 두번째 글자 이런식으로 가져온다.


string input = Console.ReadLine();   

string[] numbers = input.Split(' ');

 

"10 20"과 같은 문자열을 입력받음

입력받은 input Split에 ()안의 ‘ ‘ 공백 기준으로 문자열을 나누고 그것을 배열로 바꾼다.

{“10”, “20”}


Var 키워드

var를 앞에 자료형 대신 사용할 수 있다.

var 키워드를 사용하여 변수를 선언하면 변수의 자료형이 컴파일러에 의해 자동으로 결정된다.

초기화하는 값의 자료형에 따라 변수의 자료형이 결정된다.


문자열 대소 비교

string.Compare(str1, str2)

Compare 사용시 str1 과 str2를 비교 하는데 str1이 크면 1, 같으면 0, 작으면 -1을 반환한다.


문자열 포맷팅

string message = string.Format("My name is {0} and I'm {1} years old", name, age);

message = $"My name is {name} and I'm {age} years old";

 

첫줄처럼 뒤에 변수 이름 적고 {}안에 0부터 순서대로 넣는 방법과

2번째 줄처럼 앞에 $표시 하고 {} 안에 변수 이름 넣는 방법이 있다.


 

Switch문 사용시

Case 10:

Case 9:

    내용

    Break; 

위와 같이 사용하면 10일 때 9로 내려와서 9 내용 출력하고 break통해서 switch문을 나간다.


3항 연산자

if문의 간단한 형태로, 조건식의 결과에 따라 두 값중 하나를 선택하는 연산자

(조건식) ? 참일때 값 : 거짓일때 값;


For문에서 for(;;) 이렇게 무한루프를 돈다.

그럴 break 사용해서 탈출할 있다.


While문에서 While(true) 사용시 무한루프를 돈다.

그럴 break 사용해서 탈출할 있다.

 

while문은 조건에 부합하는 반복을 돌릴 때 훨씬 좋다.

정해진 횟수만큼 돌릴 때 쓰기보다는 언제까지 돈다 이런 식으로 조건이 만족할 때까지 돌릴 때 좋다.


 

do-while 문

조건식을 검사하기 전에 코드블록을 한번 실행한다.


foreach문 

자료의 뭉탱이 즉 배열이나 컬렉션에 대해 반복문을 작성할 때 사용한다.

 

예시)

string[] start = { "hi", "how", "are", "you", "man" };

foreach (string item in inventory)

{

Console.WriteLine(item);

}

데이터를 기준으로 반복횟수가 정해진다.


Continue 현재를 반복을 중지하고 다음 반복을 실행한다.

 

Break 경우에는 반복문을 빠져나간다.

for (int i = 1; i <= 10; i++)
{
    if (i % 3 == 0)
    {
        continue;
    }
    Console.WriteLine(i);

    if (i == 7)
    {
        break;
    }
}

I 3의 배수 일 경우 continue를 실행하는데 3일 때 continue를 실행하고 아래 console.writeline을 실행하지 않고 i++로 진행하여 i 4로 바뀌고 다음 반복을 실행한다.( Continue )

 

I 7일경우 8로 가지않고 바로 반복문을 종료한다. (Break )


배열

동일한 자료형의 값들이 연속적으로 저장되는 자료구조이다.

예시로 1 2 3 4 5 이 값들이 하나의 배열에 들어가 있다라고 생각하면 된다.

배열은 1차원 2차원 3차원 등등 여러 다차원으로 활용 가능하다.


컬렉션

자료를 모아놓은 데이터 구조이다.

배열과 비슷한 구조이다.

배열과는 다르게 크기가 가변적이다.

다양한 종류의 컬렉션이 있다.

사용하기 위해서는 System.Collections.Generic 네임스페이스를 추가해주어야 한다.

List 같은 Generic Legnth 길이를 알수 없고 Count 통해서 있다.


배열은 크기가 정해져 있지만 리스트는 유동적으로 변한다.

하지만 리스트는 배열보다는 메모리 사용량이 증가하고 데이터 접근시간이 증가

코드가 배열보다는 길어진다. 그렇기에 무분별하게 사용하기보다는 적절한 위치에서 사용하는게 중요한 같다.


매서드는 일련의 코드블록이고 코드의 재사용성과 모듈화를 위해 사용된다.

코드의 재사용성 : 매서드는 반복되는 코드를 여러번쓰는걸 방지할 수 있고 그것을 메서드로 만들어서 필요할때마다 재사용 할 수 있다.

모듈화 : 매서드를 사용하여 어떤 매서드는 숟가락 들기 어떤 매서드는 숟가락 옮기기 등 분리하여 관리할 수 있다.

가독성과 유지보수성 : 메서드를 사용시 코드가 간결해지고 가독성이 좋아지고, 유지보수시에 해당기능을 사용하는 매서드만 찾으면 되서 유지보수에 좋다.

코드의 중복 제거 : 반복적인 작업을 매서드로 묶어서 사용하면 코드의 중복을 방지할 수 있다.

코드의 추상화 : 메서드를 통해 작업단위를 추상화하고, 메서드의 이름을 통해 어떤 작업인지 어떤 역할인지 파악할수 있다.


메서드 오버로딩 : 동일한 이름의 메서드를 다양한 매개변수 목록으로 다중정의

- 같은 이름에 메서드가 매개변수의 개수, 타입, 순서가 다르면 다른 메서드로 취급

- 메서드의 기능 작업은 동일하지만 입력값에 따라 다르게 동작해야 할때 사용

- 아래와 같이 반환값이 다른건 오버로딩하는데 아무런 영향을 끼치지 않음


재귀 호출 : 무한루프에 빠질 수 있어서 잘보고 사용해야 한다.

재귀호출은 메서드가 자기 자신을 호출한다.

호출 스택에 호출된 메서드의 정보를 순차적으로 쌓고, 메서드가 반환되면서 스택에서 순차적으로 제거되는 방식

위 그림과 같이 자기 자신을 호출한다

int n 에 5를 넣었을때를 그림으로 그린 것이다.

5를 넣었을때 CountDown(4)를 호출하고 4는 3을 호출하고 그리고 결국엔 0까지 가서 Console.WriteLine("Done")을 실행하고 0에서 다시 1로 1에서 2로 2에서 3으로 결국 5까지 끝나고 main으로 돌아간다.


구조체 : 여러개의 데이터를 묶은 하나의 사용자 정의 형식

struct 키워드를 사용한다.

구조체의 멤버는 변수와 메서드로 구성된다.

사용자가 사용할려고 만든 자료형

구조체 멤버변수를 필드, 멤버 함수를 메서드라 부른다.

구조체 가평식이라 부르고 가평식(value type)의 뜻은 데이터 자체를 직접 저장하는 데이터 형식이다.

가평식 변수를 다른 변수에 할당하면 값이 복사가 된다.