분류 전체보기155 foreach() 순회 중 collection 변경은 예외 발생함 C# 에서 foreach() 문은 리스트나 배열 같은 컬렉션을 순회할 때 자주 사용됩니다.코드가 간결하고 가독성도 좋기 때문에 선호되지만, 한 가지 중요한 제한이 있습니다. foreach() 는 읽기 전용foreach (var pb in listPB){ if (IsCollision(pb, ball)) { // 순회 중 컬렉션 변경 -> 예외 발생!! listPB.Remove(pb); break; }} 겉보기에는 문제가 없어 보이지만, 이 코드는 실행 시 InvalidOperationException 예외를 발생시킵니다.foreach()는 내부적으로 열거자(Enumerator) 를 사용하기 때문에, 순회 중 컬렉션이 변경되면 예외를 던지게 되어 있습니다.. 2025. 6. 29. bool = 조건식 과 삼항 연산자 bool = 조건식예를 들어, 다음과 같은 문장이 있다고 가정해보겠습니다.if (minValue 위 코드는 minValue 가 ballSpeed 보다 작으면 moveBallDown 을 true 로 설정하는 간단한 조건문입니다. 그런데 이 코드는 아래와 같이 더 간단하게 표현할 수 있습니다.bool moveBallDown = minValue bool = 조건식 형태로, 조건문의 결과를 그대로 대입하는 방식입니다.이건 삼항 연산자와는 다른 문법입니다. 삼항 연산자위 코드를 삼항 연산자로 구현해 보면 다음과 같이 됩니다.bool moveBallDown = minValue 이렇게 해도 결과는 같지만, 불필요하게 길고 복잡한 표현입니다.bool = 조건식은 이미 조건의 결과가 true 또는 false이므.. 2025. 6. 29. 호출 순서가 문제가 될 때 : SendMessage 또는 Interface 활용 방법 유니티 강좌 중에 object 의 충돌을 판정하고 tag 를 활용하여 점수가 중복되지 않도록 다루는 방법을 보게 되었습니다. tag 를 이렇게도 활용할 수 있구나하고 예제를 따라해보던 중에 한가지 의문이 들었습니다. 그렇게 시작한 궁금증은 SendMessage() 를 거쳐 Interface 를 활용하는 방법으로까지 코드를 개선하게 되었습니다. 다음은 누군가에게 조금이나마 도움이 되었으면 하는 마음으로 제가 겪은 과정을 시간의 흐름에 따라 쓴 글입니다. 1. Tag 를 이용한 중복 처리 필터링Player 오브젝트Player GameObject 는 Score 스크립트를 컴포넌트로 가지고 있는데 어떤 물체에 부딪혔을 때, 그 물체의 tag 가 "Hit" 가 아니라면 점수를 추가하는 기능입니다. // Pla.. 2025. 6. 27. C# 의 Interface 기초부터 활용까지 C#에서 인터페이스(Interface) 는 클래스가 따라야 할 규칙(계약서)을 정의합니다.이번 편에서는 인터페이스에 대해 자세히 알아보겠습니다. 인터페이스란?인터페이스는 클래스나 구조체가 구현해야 할 기능만 정의하는 “타입” 입니다. public interface IItem{ void Use(); }• 이름 앞에 I 를 붙이는 것이 관례입니다. (IUsable, IDamageable 등)• 함수의 제목만 있고 구현은 없는 것이 특징입니다.• 앞에 public 을 붙이지 않으면 같은 파일 안에서만 보이게 됩니다. ( default 는 internal )• 다른 클래스나 다른 파일에서도 써야 하므로 명시적으로 public 을 붙여주는 것이 가독성 면에서 좋습니다. 상속? 구현?문법적으로는 인.. 2025. 6. 26. C#의 is 와 as 키워드 (#02) 1편에서는 is 와 as 에 대한 기본적인 코드를 가지고 살펴보았습니다. 이번 편에서는 보다 실용적인 예제를 다뤄보겠습니다. 예시 클래스class Enemy{ public virtual void Cry() { Console.WriteLine("Enemy 가 괴성을 지릅니다"); }}class Zombie : Enemy{ public override void Cry() { Console.WriteLine("Zombie : 으어어어..."); }}class Robot : Enemy{ public override void Cry() { Console.WriteLine("Robot: 삐비빅! 시스템 경고!"); } .. 2025. 6. 26. C#의 is 와 as 키워드 (#01) C# 에서는 객체가 어떤 타입인지 확인하거나, 타입 변환을 안전하게 수행할 때 is 와 as 키워드를 자주 사용합니다. 이 둘은 형변환과 타입 검사를 보다 깔끔하게 처리하기 위한 문법입니다. is 키워드 : 타입인지 확인만 하고 싶을 때is는 객체가 특정 타입인지 확인하는 데 사용합니다. true 또는 false를 반환합니다.object obj = "Hello"; if (obj is string) { Console.WriteLine("obj는 string입니다."); } C# 7.0 이상에서는 아래처럼 패턴 매칭과 함께 변수를 선언하며 사용할 수 있습니다.if (obj is string s) { // s는 string으로 자동 변환됨 Console.WriteLine(s.ToUpper(.. 2025. 6. 26. 이전 1 ··· 9 10 11 12 13 14 15 ··· 26 다음