| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- claude code
- 버전관리
- 엘지 개발자 옵션
- 최적화
- 게임개발
- 다이나믹 폰트
- Unity Editor
- Samsung 개발자 옵션
- Gir Ignore
- 2D Camera
- ui
- DotsTween
- Custom Package
- Android Debug
- adfit
- PVRTC
- git
- 기초
- 입문
- Dynamic Font
- 텍스트 메시 프로
- SVN
- Dots
- LG 개발자 옵션
- C#
- 삼성 개발자 옵션
- 이미지 폰트
- Sprite Atlas
- unity
- TextMeshPro
- Today
- Total
목록C# (129)
EveryDay.DevUp
[PART4.제어문: 분기와 반복(13/13)] goto — 왜 언급은 하지만 권장되지 않는가C# 언어에 남아 있는 가장 원시적인 점프 / 합법적이라 여겨지는 드문 용도 / IL이 보여주는 진실: 모든 분기는 결국 goto다목차문제 제기 — 왜 아직도 `goto`를 알아야 하는가개념 정의 — `goto`는 정확히 무엇인가내부 동작 — IL이 보여주는 진실: 모든 분기는 `goto`다실전 적용 — `goto`가 합법적이라고 여겨지는 두 가지 경우함정과 주의사항C# 버전별 변화정리 — 이것만 기억하라1. 문제 제기 — 왜 아직도 goto를 알아야 하는가Unity에서 캐릭터 이동 로직을 짜다가, 동료가 작성한 코드에서 이런 줄을 발견했다고 가정합니다.C#goto RestartLoop;순간 머릿속이 복잡해집니다..
[PART4.제어문: 분기와 반복(12/13)] break · continue · return — 흐름 제어 점프 키워드 3종 세트루프 탈출 vs 다음 반복 vs 메서드 종료 / 중첩 루프의 한계와 우회법 / 컴파일러가 만드는 br.s와 ret목차문제 제기 — 똑같이 "멈춤"인데 결과가 다르다개념 정의 — 점프의 대상이 다르다내부 동작 — Roslyn은 점프 라벨을 어떻게 박는가실전 적용 — 중첩 루프 탈출 4가지 방법함정과 주의사항C# 버전별 변화정리1. 문제 제기 — 똑같이 "멈춤"인데 결과가 다르다Unity 신입 개발자가 인벤토리에서 특정 아이템을 찾는 코드를 짭니다.C#// 인벤토리에서 "포션"을 찾으면 멈추고 싶다foreach (var item in inventory){ if (item.N..
[PART4.제어문: 분기와 반복(11/13)] while · do-while — 조건을 앞에서 볼 것인가, 뒤에서 볼 것인가이 글의 목표 - while과 do-while이 의미적으로 무엇이 다른지(조건을 본문 앞에서 검사 vs 뒤에서 검사) 한 줄로 설명할 수 있다. - "본문이 최소 한 번은 실행되어야 한다"는 요구가 들어왔을 때 두 형태 중 어느 쪽을 골라야 하는지 즉시 판단할 수 있다. - while (true) { ... break; } 패턴을 언제 쓰고, IL이 어떻게 변환되는지 안다. - for, while, do-while을 같은 동작으로 서로 옮길 수 있고, 차이가 무엇인지(스코프·의도) 설명할 수 있다. - Unity 코루틴에서 while이 등장할 때 왜 yield return이 반드시..
[PART4.제어문: 분기와 반복(10/13)] foreach — 컬렉션 순회의 기본요약 foreach 는 컬렉션의 모든 요소를 처음부터 끝까지 한 번씩 읽기만 할 때 쓰는 가장 자연스러운 반복문입니다. 인덱스를 직접 다루지 않으므로 가독성이 좋고, 컴파일러가 내부적으로 GetEnumerator() + try/finally(Dispose) + while(MoveNext()) 패턴으로 펼쳐 줍니다. 핵심은 foreach 가 인터페이스에 묶이지 않는다는 점입니다 — IEnumerable 를 구현하지 않아도 GetEnumerator() 메서드 하나만 있으면 동작하는 덕 타이핑(duck typing) 방식이며, C# 9 부터는 그 메서드를 확장 메서드로 외부에서 부여할 수도 있습니다. 컴파일러는 타입을 보고 다..
[PART4.제어문: 분기와 반복(9/13)] for 반복문 — 인덱스를 직접 다루는 반복요약 for 반복문은 초기식·조건식·증감식 세 부분으로 반복을 정밀하게 제어하는 문법입니다. 핵심은 인덱스를 직접 다룬다는 점입니다. 첫 번째 요소부터 차례대로 읽기만 한다면 다음 글에서 다룰 foreach 가 더 깔끔하지만, 인덱스가 필요하거나 역방향으로 돌거나 두 변수를 동시에 움직이거나 반복 중에 컬렉션을 수정해야 한다면 for 가 정답입니다. Roslyn 컴파일러는 for 를 "본문 먼저, 조건 검사는 끝에서" 패턴으로 IL 변환합니다. 매 반복마다 점프를 한 번만 쓰는 최적화입니다. 또한 배열의 arr.Length 는 ldlen 한 명령어로 인라인되지만, List.Count 는 callvirt get_Cou..
[PART4.제어문: 분기와 반복(8/13)] 위치 패턴 — Deconstruct 기반 구조 분해 매칭 (C# 8)요약 위치 패턴(positional pattern)은 객체를 Deconstruct 메서드로 분해한 다음, 꺼낸 값들을 위치 순서로 매칭하는 C# 8 기능입니다. 핵심은 point is (0, var y) 라고 쓰면 컴파일러가 자동으로 point.Deconstruct(out int x, out int y) 호출 코드를 끼워 넣고, 그 결과를 비교 사슬로 검사한다는 점입니다. 직전 글의 튜플 패턴이 이미 분해된 값을 매칭하는 문법이라면, 위치 패턴은 분해 자체를 매칭의 일부로 만드는 문법입니다. 동작은 단순하지만 함정이 네 가지 있습니다. ① Deconstruct 가 없는 타입에는 쓸 수 없습니..
[PART4.제어문: 분기와 반복(7/13)] 튜플 패턴 — 여러 값을 동시에 매칭 (C# 8)요약 튜플 패턴은 두 개 이상의 값을 한 번에 묶어 switch 표현식으로 분기하는 C# 8 기능입니다. 핵심은 "여러 변수의 상태 조합을 표(table) 처럼 펼쳐 보여 준다"는 것입니다. (x, y) switch { ... } 라고 쓰지만 실제 IL 에서는 ValueTuple struct 인스턴스가 만들어지지 않고, x 와 y 에 대한 bgt.s/brfalse.s 분기 사슬로 평탄화됩니다. 즉, 가독성은 선언적이고 비용은 if-else 와 동일합니다. 다만 세 가지 함정이 있습니다. ① 패턴은 위에서 아래로 매칭되므로 일반적인 패턴이 위에 있으면 뒤가 도달 불가가 됩니다. ② switch 표현식은 모든 입력..
[PART4.제어문: 분기와 반복(6/13)] 속성 패턴 — 객체의 프로퍼티 값으로 분기 (C# 8) · 확장 속성 패턴 (C# 10)객체의 여러 프로퍼티를 중괄호 안에서 동시에 매칭 / 관계·논리 패턴과 자유롭게 조합 / C# 10 점 표기법으로 중첩 객체를 평탄하게 검사목차[문제 제기] — 또 그놈의 null 체크와 `&&` 사슬[개념 정의] — 객체 안을 들여다보는 한 줄 검사[내부 동작] — 점 표기법은 어떻게 평탄해지는가[실전 적용] — 관계·논리 패턴과 자유롭게 섞기[함정과 주의사항][C# 버전별 변화][정리]1. [문제 제기] — 또 그놈의 null 체크와 && 사슬Unity에서 RPG 인벤토리 시스템을 만든다고 가정합시다. "장착 가능한 무기 중 내구도가 남아 있고, 아직 장비되지 않은 아..
[PART4.제어문: 분기와 반복(5/13)] 리스트 패턴 — 배열·리스트의 모양으로 분기 (C# 11)컬렉션의 첫 원소·마지막 원소·길이를 한 줄로 검사하는 패턴 / .. 슬라이스로 양 끝만 매칭 / Length + 인덱서 + Slice 호출의 매크로목차문제 제기 — 배열을 검사하려고 if를 4번 쓰고 있나요개념 정의 — 리스트의 "모양"을 패턴으로 그리기내부 동작 — 컴파일러가 요구하는 "모양 있는 타입"의 조건실전 적용 — 어디서 어떻게 쓰나함정과 주의사항C# 버전별 변화정리1. 문제 제기 — 배열을 검사하려고 if를 4번 쓰고 있나요Unity에서 인게임 디버그 콘솔을 만들고 있다고 가정합니다. 개발자가 /spawn enemy goblin 5 같은 명령어를 입력하면, 이를 공백으로 자른 string..
[PART4.제어문: 분기와 반복(4/13)] 패턴 매칭 기초 — is 타입 패턴타입 검사·변수 캡처를 한 줄에 / 관계·논리 패턴으로 범위 검사 / is null 의 함정과 IL 차이목차문제 제기 — 왜 이걸 알아야 하지?개념 정의 — `is` 타입 패턴이란 무엇인가내부 동작 — 컴파일러가 패턴을 어떻게 펼치는가실전 적용 — Unity에서 어디에 쓰는가함정과 주의사항C# 버전별 변화 — 패턴 매칭의 점진적 강화정리 — 이것만 기억하라1. 문제 제기 — 왜 이걸 알아야 하지?Unity에서 다음 코드를 자주 보게 됩니다.C#void OnTriggerEnter(Collider other){ if (other.gameObject.GetComponent() != null) { IDamag..
