전체 글 51

내일배움캠프: object와 generic

C#에서 object, generic타입은 모두 유연한 데이터형을 사용하기 위한 타입이다. object는 모든 데이터형의 최상위 타입으로 어떤 데이터 형이든 저장할 수 있는 유연성을 제공한다.  하지만 object를 사용할 때는 값 타입을 참조형으로 변환할 때 박싱/언박싱이 발행하여 성능에 영향이 끼친다. 제네릭 타입의 경우에는 컴파일 타임에 타입을 지정해줘 object에 비해 타입 안전성이 높고, 값 타입을 박싱 / 언박싱 하지도 않아 유연성을 높여준다.  다만, .NET Framework 2.0  보다 낮아 제네릭을 지원하지 않는 경우에는 object 타입을 사용해야할 수도 있다.

내일배움캠프 2024.11.08

내일배움캠프: for문을 통한 AddListener 등록 시 인자 전달 문제 해결 방법

문제 상황Unity에서 for문을 통해 UI 버튼에 이벤트 리스너를 등록하던 중 내가 생각한 값이 아니라 이상한 값이 들어가는 현상이 생겼다. 코드상에서 원인을 찾을 수 없어서 중단점을 통해 확인해보니 메서드에 전달해준 인자 값이 계속 증가한다는 것을 확인 했다. 해당 문제를 해결하기위해 구글링을 통해서 자료를 찾아보니 람다식은 인자를 참조 해서 그 문제가 생긴다는 것을 알았다.  문제 코드 for (int i = 0; i SomeMethod(i));}AddListenr를 통해 인자 값을 넘겨줄 때는 람다식 혹은 델리게이트를 사용해 넘겨줘야하는데 람다식과 델리게이트 모두 참조형으로 값을 가지고 있기 때문에 문제가 발생했다. 해결 코드for (int i = 0; i SomeMethod(index));}..

내일배움캠프 2024.11.07

내일배움캠프: 이벤트 버스 패턴 (Event Bus Pattern)

이벤트 버스 패턴이란?이벤트 버스는 발행자(Publisher)와 구독자(Subscriber) 사이에서 중간 매개체(hub) 역할을 하는 패턴이다.  예를 들어, 이벤트 버스는 기사를 발행하고 이를 구독자에게 전달하는 신문사라고 생각하면 된다.신문사가 없다면 발행자가 직접 기사를 작성해 구독자들에게 전달해야 하지만, 신문사(이벤트 버스)를 통해 기사를 발행할 수 있게 된다. 즉, 구독자는 발행자가 누구인지 알 필요가 없고, 발행자도 구독자의 정보를 알 필요가 없어진다. 다만, 이벤트 버스를 통해 신문의 발행과 구독이 이뤄지기 때문에 약간의 비용이 발생할 수 있다. 일종의 수수료라고 생각하면 된다.  또한, 신문사를 통해 모든 발행과 구독이 이뤄지고 있다. 즉, 모든 기사(이벤트)의 중심이 신문사(이벤트버스..

내일배움캠프 2024.11.02