분류 전체보기100 [C#] 스택과 힙, 값과 참조, 동적/정적 할당 기술면접 대비하기 #7 스택, 힙 메모리란 무엇이며 어떤 차이가 있는가? 스택과 힙은 동적 메모리의 유형이다. 동적 메모리는 프로그램 실행 중 해제가 가능하다. (1) 스택 지역변수와 매개변수가 저장되는 곳이다. 스택 메모리는 값(value) 형식이다. C#에서는 스택 영역의 용량이 작다. (약 1MB 정도) 0으로 초기화 되는 자료형 (ex. public int n 까지만 선언해도 알아서 0으로 초기화) 스택 메모리의 경우 가지고 있는 데이터 (주소값 등)는 사용하면 사라진다. 지역변수 (Loacal Variable) : 블록 안에서 선언된 변수들. 매개변수 (Parameter) : 함수에서 사용하기 위해 선언하는 변수들. (2) 힙 힙 메모리는 참조(reference) 형식이다. C#에서는 힙 영역의.. 2024. 2. 2. [C#] 델리게이트와 이벤트, action과 func 기술면접 대비하기 #6 델리게이트(Delegate)란? 델리게이트는 메서드를 다른 메서드/클래스로 전달하기 위해 만들어졌다. 델리게이트는 메서드의 입력 파라미터로 전달될 수 있으며, 메서드의 리턴값으로 전달 받을수도 있다. 델리게이트 정의에서 중요한 것은 입력 파라미터와 리턴 타입이다. 어떤 메서드가 델리게이트 메서드의 입력 파라미터 타입/개수, 리턴 타입이 동일하다면 그 메서드는 해당 델리게이트에서 사용할 수 있다. 델리게이트는 컴파일러에서 클래스로 변환되므로 클래스와 비슷하게 new를 사용해 객체를 생성할 수 있다. 호출할 때에는 Invoke 메서드를 주로 사용하지만, invoke 없이 바로 함수처럼 사용할 수도 있다. 위와 같은 특성 덕분에 특정 시점에서 호출해야할 여러 개의 메서드들을 미리 구독시.. 2024. 2. 1. [Unity] 게임 진행에 따라 round 표시하기 최종 프로젝트 개발 일지 #3 GameScene에서 게임 진행을 위해 Timer 로직과 함께 필요한 UI가 있다. 바로 round이다. 이번 프로젝트의 게임은 3판2선승 제를 취하고 있기 때문에, 플레이어의 점수에 따라 라운드를 잘 표시해줄 필요가 있었다. 내가 생각한 로직은 round 옆의 숫자를 조절할 수 있는 메서드를 따로 만들고 이를 제어하는 컴포넌트로 timer를 선택해 GameScene_UI 내에서 timer와 round가 처리될 수 있도록 구현하는 것이다. // RoundLogic.cs public void RoundIndex() { int scoreRed; int scoreBlue; int.TryParse(TeamRedScore.text, out scoreRed); int.TryParse(.. 2024. 1. 31. [Unity] 2가지 타이머 적용하기(코루틴) 최종 프로젝트 개발 일지 #2 GameScene에서 위 그림처럼 [ Round (숫자) : (초) s ] 형식의 UI를 좌측 상단에 띄웠다. 우리 게임의 GameScene 흐름은 다음과 같다. Start => 1라운드 파밍페이즈 - 1라운드 배틀 페이즈 if 누군가의 점수가 1이라면 => 2라운드 파밍페이즈 - 2라운드 배틀 페이즈 if 누군가의 점수가 2라면 => Game Over else if 1대1이라면 => 3라운드 파밍페이즈 - 3라운드 배틀 페이즈 => Game Over 점수에 따라서 라운드가 다음으로 진행되고, 파밍페이즈와 배틀 페이즈의 타이머가 따로 분리되어 있는 형태이다. // RoundTimer.cs IEnumerator FarmingTimer() { //yield return new .. 2024. 1. 30. [C#] 델리게이트와 이벤트 / action과 func 기술면접 대비하기 #6 델리게이트(Delegate)란? 델리게이트는 메서드를 다른 메서드/클래스로 전달하기 위해 만들어졌다. 반환 타입과 매개변수 타입이 같은 메서드의 포인터를 가리킬 수 있는 C#의 기능이다. 델리게이트는 메서드의 입력 파라미터로 전달될 수 있으며, 메서드의 리턴값으로 전달 받을수도 있다. 델리게이트 정의에서 중요한 것은 입력 파라미터와 리턴 타입이다. 어떤 메서드가 델리게이트 메서드의 입력 파라미터 타입/개수, 리턴 타입이 동일하다면 그 메서드는 해당 델리게이트에서 사용할 수 있다. 델리게이트는 컴파일러에서 클래스로 변환되므로 클래스와 비슷하게 new를 사용해 객체를 생성할 수 있다. 호출할 때에는 Invoke 메서드를 주로 사용하지만, invoke 없이 바로 함수처럼 사용할 수도 있.. 2024. 1. 29. [C#] 인터페이스와 추상클래스 / 스택과 큐의 차이 기술면접 대비하기 #5 제네릭과 object의 차이 object는 타입이고, 제네릭은 타입을 사용하기 위한 도구이다. 오브젝트는 모든 자료형의 최상위 클래스이기 때문에 특정 타입을 지정하지 않고도 처리를 유연하게 할 수 있다. (다형성 강화) 단, 데이터 이동 간에 반드시 형변환이 이루어지므로 오버헤드 발생. (박싱-언박싱이 꼭 일어난다) 제네릭의 경우 타입을 지정하기 때문에 다형성은 포기하지만 속도가 빨라진다. (객체를 일일이 타입별로 생성하지 않아도 됨, 중복 코드 줄어듦) 언박싱은 발생할지라도 박싱 과정은 생략할 수 있게 함. 메모리적 이점이 있다. 인터페이스와 추상클래스의 차이 (1) abstract class = 해당 클래스를 추상화해서 new로 생성할 수 없게 함. 추상 클래스 내부에 생성한 .. 2024. 1. 26. 이전 1 2 3 4 5 6 7 8 ··· 17 다음