덴바의 노트

내일배움캠프 5일차 TIL 본문

프로그래밍 노트/TIL

내일배움캠프 5일차 TIL

덴바 2024. 4. 22. 21:19

 

 

 

오늘의 학습 키워드

 

 

  • 가비지 컬렉터
  • For vs Foreach

 


 

 

 

 

 

 

Visual Studio를 사용한 C# 공부!

 


캠프 2차...

오늘부터는 기초부터 다시 배워서 부족한 기초에 대한 지식을 갈고 닦았습니다.

C# 변수와 자료형 부터 제네릭 등... 고급 기능까지를 완벽하게 이해하는 것을 목표로 하고 있습니다.

먼저, 비주얼 스튜디오에서 C#을 사용하기 위해서는 위 사진과 같이 .NET 데스크톱 개발을 설치해야 합니다.

만약 설치가 되어있지 않다면, Visual Studio Installer를 찾아서 실행하면 위와 같은 창이 다시 뜹니다.

 

 

만약 설치가 되어있지 않다면, 아래와 같이 Visual Studio Installer를 찾아서 실행하면 위와 같은 창이 다시 뜹니다.

 

 

 

 


 

 

가비지 컬렉터 (Garbage Collector)

C#이라는 언어를 사람들이 많이 사용하는 이유는 무엇일까?

 

라이브러리와 그 외 기능들이 직관적이고 사용하기 편하다는 장점 때문에  사람들이 사용한다고 생각합니다.

 

또한, Unity 게임 엔진이 C#을 기반하는 점도 있겠지만,

 

C#은 C, C++과는 달리 메모리 관리 자동으로 해준다는 장점이 있습니다.

 

 

가비지 컬렉터는 일명 '청소부'

 

코딩을 하다 보면, 함수를 만들거나 변수를 만들게 됩니다.

 

이 때 생성된 것들에 대한 정보를 관리하고 있는 메모리가 있고, 그 곳에 데이터가 많이 쌓일 시,

 

가비지 컬렉터는 해당 메모리를 정리합니다.

 

이런식으로 C#은 자동적으로 메모리를 관리합니다.

 

자세한 내용은 호출 스택, 힙, Value-Type, Reference-Type 등 길어질 것 같으니 위와 같이 요약하겠습니다.

 

가비지 컬렉터는 정말 좋은 기능이지만, 너무 빈번히 호출될 경우 프로그램의 성능을 하락시키게 됩니다.

 

그러면 성능 저하를 일으키는 가비지 컬렉터를 꺼버리면 되지 않을까 싶을수도 있지만,

 

그렇게 되면 메모리 관리를 자동으로 한다는 C#의 장점을 잃게됩니다.

 

아직 정확하게 공부하지 못했지만, 가비지 컬렉터의 호출 빈도를 줄이는 방법이라던가,

 

캐싱하여 빈번한 생성을 방지한다던가 다양한 방법들이 있는걸로 알고 있습니다.

 

이와 관련해서는 추후 좀 더 공부하여 다음 포스트의 내용으로 하도록 하겠습니다.

 

 

For vs Foreach

 

우리가 제일 주로 사용했던 방식은 For문을 사용하는 방식입니다.

 

ex)

 

for(int i = 0; i < length; i++) { }

 

너무 많이 사용해서 눈감고도 작성할 수 있을 정도입니다.

 

하지만 C#에서는 for문과 달리 좀 더 편한 반복문이 존재합니다.

 

그것이 Foreach문입니다. 

 

ex)

 

foreach (배열의 자료형 element in 배열)

 

 

배열에 존재한 데이터 수 만큼, 하나씩 꺼내서 foreach문의 블록 내에서 기능을 반복하는 방식입니다.

 

조사한 바로는 for문과 foreach문의 기본적인 성능은 크게 다름 없지만, 데이터의 임의 접근가 불가능 시에는

 

foreach문이 효과적이라고 합니다.

 

자세한 내용은 좀 더 조사한 후에 작성할 예정입니다.

 

 

 

 


 

 

 


오늘의 회고

 

 

유니티는 C#을 기반으로 한다는 것을 알면서도 C#을 건너뛰고 공부한 결과, 처음에는 간단한 기능들을 구현할 수 있었습니다.

하지만 점점 난이도가 높아지는 부분이 있었습니다.

1. event
2. delegate
3. Generic
4. etc...

결과적으로 C#의 기능들을 유니티에서 상당히 많이 쓰며, 이를 커바하기 위해서 UnityAcion, UnityEvent 과 같은 기능들을 유니티에서 제공은 하지만, 상황에 따라 C#의 event나 Action이 효과적일 때가 있다는 것을 알았습니다.

기초가 아직 완벽하게 갖춰지지 않은 상태로는 부족하다는 것을 깨닫고, 앞으로의 캠프 과정 내에서 C#의 문법을 완정 정복할 것을 목표로 하고 싶습니다.

'프로그래밍 노트 > TIL' 카테고리의 다른 글

내일배움캠프 7일차 TIL  (0) 2024.04.24
내일배움캠프 6일차 TIL  (0) 2024.04.23
내일배움캠프 4일차 WIL  (0) 2024.04.19
내일배움캠프 3일차 TIL  (1) 2024.04.18
내일배움캠프 2일차 TIL  (0) 2024.04.17