C#43 병합 할당 연산자(??=) 이해하기 ??= 연산자는 C#에서 null 병합 할당 연산자라고 부릅니다.C# 8.0 버전부터 추가된 기능으로, 코드를 훨씬 더 간결하게 만들어줍니다.간단히 말하면, 변수가 null이면 값을 할당하고, null이 아니면 아무것도 하지 않는다.이것이 핵심입니다. 이전에는 어떻게 썼나요???= 연산자가 없던 시절에는 이렇게 직접 null 체크를 해야 했습니다.if (legsTipActive == null) { legsTipActive = new List(); } 이 방식도 물론 잘 작동하지만, 간단한 동작을 위해 3줄이나 써야 했습니다. 지금은 어떻게 바뀌었나요?이제 ??= 연산자를 사용하면 한 줄로 같은 작업을 끝낼 수 있습니다.legsTipActive ??= new List(); 짧고, 깔끔하고, 읽기도 .. 2025. 4. 28. Enum을 활용한 Dictionary 이해하기 enum 은 무엇인가요?C# 에서 enum은 상수들의 집합을 의미합니다. 기본적으로 0부터 숫자가 자동으로 할당되지만, 명확하게 = 0을 지정해주는 것이 좋습니다. 이렇게 하면 배열이나 다른 자료구조와 연동할 때 헷갈릴 위험이 줄어듭니다.enum PlayerState{ Idle = 0, Run, Jump} 위와 같이 작성하면 Idle은 0, Run은 1, Jump는 2의 값을 갖습니다. 특별히 값을 지정하지 않으면 1씩 증가합니다. 문자열로부터 enum 값을 얻는 방법 (Enum.TryParse)문자열을 enum 값으로 변환해야 하는 상황에서는 Enum.TryParse() 메서드를 사용합니다. 예를 들어, "Run"이라는 문자열이 있을 때 이를 PlayerState.Run으로 변환할 수 .. 2025. 4. 28. 대리자를 이용한 FSM 만들기 게임 개발을 하다 보면 캐릭터의 상태를 관리해야 하는 상황이 자주 생깁니다.플레이어가 Idle → Walk → Die 같은 상태를 오가며 행동해야 할 때, 우리는 흔히 FSM (Finite State Machine) 을 사용하게 됩니다.처음에는 대부분 switch-case 방식으로 구현하게 됩니다. 상태 수가 적고, 단순히 Update()만 필요할 때는 이 방식이 가장 쉽고 직관적입니다. 하지만 상태가 점점 늘어나고, 각 상태마다 진입(Enter), 수행(Update), 종료(Exit) 같은 단계가 나뉘기 시작하면 코드는 금세 복잡해지고, 유지보수가 어려워집니다.이럴 때 대리자(delegate)를 활용하면 FSM 구조를 더 유연하고 간결하게 만들 수 있습니다. FSM 구조, 이렇게 구성합니다이번 예제에서.. 2025. 4. 24. delegate 를 더 간결하게 선언하는 방법 C# 에서 delegate는 함수 자체를 변수처럼 다룰 수 있게 해주는 기능입니다. 이 덕분에 함수 호출을 동적으로 구성할 수 있고, 이벤트나 콜백 처리에 자주 사용됩니다.하지만 직접 delegate 형식을 정의해서 사용하는 방식은 코드가 길어지고 구조가 복잡해 보일 수 있습니다. 전통적인 delegate 방식// delegate 형식 정의private delegate void StateCallback();// delegate 변수 선언private StateCallback onStart;private StateCallback onUpdate;private StateCallback onComplete;// 함수 할당onStart = () => Debug.Log("시작");onUpdate = () => D.. 2025. 4. 23. bool isValue = (조건식) : 삼항 연산자를 보다 단순하게 C# 을 처음 배울 때, 다음과 같은 형태의 코드를 자주 접하게 됩니다:bool isEven = (number % 2 == 0) ? true : false; 처음에는 조건식의 결과를 true 또는 false로 나누어 대입하는 이 방식이 자연스럽고 익숙할 수 있습니다.삼항 연산자 (조건 ? A : B) 는 간단한 분기 처리를 할 때 자주 사용되는 문법이기도 합니다.하지만 위 코드는 다음과 같이 훨씬 더 간단하게 쓸 수 있습니다.bool isEven = (number % 2 == 0); 조건식을 그대로 대입해도 되는 이유조건식 (number % 2 == 0) 자체가 bool 값을 반환하기 때문에, 별도의 분기 처리 없이도 결과를 바로 bool 변수에 대입할 수 있습니다.다시 말해, 조건이 참이면 true, .. 2025. 4. 22. 구조체를 배열로 만들면 메모리 저장 위치는 어디일까? C# 에서 "구조체(struct)는 스택에 저장된다" 는 말을 자주 들어봤을 것입니다. 그런데 배열은 "힙에 저장된다"고 합니다. 그렇다면 "구조체를 배열로 만들면 어디에 저장될까?" 하는 궁금증이 생깁니다.이 글은 바로 그 궁금증을 풀기 위해 정리한 내용입니다. 구조체는 기본적으로 스택에 저장다음처럼 지역 변수로 구조체를 선언하면, 이 변수는 스택(stack)에 저장됩니다:void MyMethod(){ MyStruct s = new MyStruct(); // 스택에 저장됨} 값 타입(struct, int, float, bool 등)은 참조 타입(class)과 달리 스택 메모리에 저장되는 것이 일반적입니다. 배열은 힙에 저장 (new 없이도)C#에서 배열은 참조 타입입니다. 즉, 배열 자체는 무조건.. 2025. 4. 22. 이전 1 2 3 4 5 6 ··· 8 다음