async/await
·
C#
1. 비동기 프로그래밍(Asynchronous Programming)의 필요성게임이나 인터랙티브 애플리케이션의 메인 스레드는 사용자 입력 처리, 게임 로직 업데이트, 화면 렌더링 등 매 프레임마다 수행해야 할 작업이 많습니다. 만약 이 메인 스레드에서 시간이 오래 걸리는 작업(예: 웹 서버에서 데이터 다운로드, 대용량 파일 저장)을 동기적으로(Synchronously) 실행하면, 해당 작업이 완료될 때까지 메인 스레드는 다른 모든 작업을 멈추게 됩니다. 이는 곧바로 애플리케이션 '멈춤' 현상(Freeze), 즉각적인 입력 반응 불가, 프레임 드랍 등으로 이어져 사용자 경험을 크게 해칩니다.비동기 프로그래밍은 이러한 문제를 해결하기 위해, 오래 걸리는 작업을 시작시킨 후 즉시 메인 스레드에게 제어권을 돌려..
코루틴
·
C#
1. 코루틴(Coroutine)이란 무엇인가?코루틴은 실행을 일시 중지하고 나중에 다시 시작할 수 있는 특별한 종류의 함수(또는 메서드)입니다. 일반적인 함수는 호출되면 시작부터 끝까지 한 번에 실행되고 결과를 반환하지만, 코루틴은 실행 중간에 제어권을 잠시 Unity 엔진에게 넘겨주고, 특정 조건이 충족되면 중지했던 지점부터 실행을 이어갈 수 있습니다.이를 통해 다음과 같은 작업들을 효율적으로 처리할 수 있습니다.시간에 걸친 작업 분산: 하나의 긴 작업을 여러 프레임에 걸쳐 나누어 수행함으로써, 단일 프레임의 부하를 줄여 성능 저하를 방지합니다.순차적인 로직 구현: 특정 행동을 순서대로, 각 행동 사이에 시간 지연을 두면서 실행하는 로직(애니메이션 시퀀스, 튜토리얼 단계 등)을 간결하게 작성할 수 있습..
람다식
·
C#
1. 람다식(Lambda Expression)이란 무엇인가?람다식은 이름 없이 정의되어 사용되는 코드 블록, 즉 익명 함수를 작성하기 위한 간결한 문법입니다. 이는 메서드를 정의하고 그 메서드를 델리게이트 인스턴스에 할당하는 과정을 훨씬 짧게 줄여줍니다. 람다식은 주로 델리게이트 타입이 필요한 곳(메서드의 인자, 변수 할당 등)에 직접 코드 로직을 전달하는 용도로 사용됩니다.람다식의 핵심은 => 연산자이며, 이를 "goes to"라고 읽습니다. 이 연산자는 람다식의 입력 매개변수(왼쪽) 와 실행 코드(오른쪽) 를 구분하는 역할을 합니다.2. 람다식의 기본 구문람다식은 입력 매개변수의 유무 및 개수, 그리고 실행 코드의 형태(단일 표현식 또는 문장 블록)에 따라 다양한 형태로 작성될 수 있습니다.기본 형태..
이벤트
·
C#
1. 이벤트 기반 프로그래밍과 발행-구독 패턴이벤트 기반 프로그래밍은 프로그램의 흐름이 특정 이벤트의 발생과 그에 대한 반응(이벤트 핸들링)에 의해 결정되는 프로그래밍 모델입니다. 이는 사용자 입력, 시스템 알림, 다른 객체의 상태 변화 등 다양한 '사건'에 대응하여 코드가 실행되도록 합니다.이러한 모델을 구현하는 대표적인 디자인 패턴이 발행-구독(Publish-Subscribe, Pub/Sub) 패턴입니다.발행자 (Publisher): 특정 이벤트가 발생했음을 알리는 주체입니다. 자신의 상태에 중요한 변화가 생기거나 특정 조건이 충족되면 이벤트를 '발행(Publish)' 또는 '발생(Raise)'시킵니다. 발행자는 어떤 구독자들이 있는지 알 필요가 없습니다.구독자 (Subscriber): 특정 이벤트에..
타입 추론과 동적 타입
·
C#
1. 타입 추론과 var 키워드var 키워드는 지역 변수(Local Variable) 를 선언할 때 명시적인 타입 이름 대신 사용할 수 있는 키워드입니다. var 자체는 특정 데이터 타입이 아니며, 변수 선언 시 대입되는 초기화 식(Initialization Expression)을 보고 컴파일러가 해당 변수의 정확한 정적 타입을 컴파일 시점에 추론하도록 지시하는 역할을 합니다. 즉, 개발자가 타입 이름을 직접 쓰는 수고를 덜어주는 일종의 문법적 편의 기능(Syntactic Sugar)입니다.[문법]// var를 사용하여 지역 변수 선언 및 초기화var 변수이름 = 초기화식;[컴파일러의 타입 추론 예시]var number = 10; // 컴파일러는 number를 int 타입으로 추론합니다. (int num..
Action, Func, Predicate
·
C#
1. 델리게이트 및 제네릭 델리게이트의 필요성델리게이트는 특정 메서드 시그니처와 일치하는 모든 메서드를 참조할 수 있는 타입 세이프(Type-Safe) 함수 포인터입니다. 예를 들어, 정수 두 개를 받아 정수를 반환하는 메서드를 참조하려면 다음과 같이 커스텀 델리게이트를 선언해야 했습니다.delegate int MyIntOperation(int a, int b);마찬가지로, 문자열 하나를 받아 아무것도 반환하지 않는 메서드를 위해서는 또 다른 델리게이트 선언이 필요합니다.delegate void MyStringProcessor(string message);이처럼 다양한 시그니처에 대해 매번 delegate 키워드로 새로운 타입을 정의하는 것은 코드의 양을 늘리고 번거로움을 야기합니다. Action, Fu..