오늘 공부한 내용📝
오늘은 C#에서 delegate라는 개념을 배웠다. 처음에는 왜 이걸 써야 하는지 좀 헷갈렸지만, 직접 코드를 작성해 보면서 그 유용성을 느끼게 되었다. delegate는 메서드를 대신 호출해주는 역할을 한다.
왜 delegate를 사용해야 할까?🤔
처음에는 단순히 메서드를 직접 호출하는 것과 뭐가 다른지 의문이 들었다. 하지만 delegate를 사용하면 여러 메서드를 한 번에 호출할 수 있고, 메서드를 매개변수로 전달할 수 있어 코드의 유연성이 높아진다. delegate를 사용하면서 만족스러웠던 부분은 특정 클래스의 메서드 활용의 자유도가 상당히 높아진다는 점이었다.
코드 예시: 몬스터 처치 후 보상 처리
몬스터를 처치하면 코인, 경험치, 포인트를 모두 적립해줘야 하는 상황이 있다고 가정해보자.
이때, delegate를 사용하지 않고 각각의 메서드를 호출하면 코드가 중복되고 복잡해질 수 있다.
하지만 delegate를 사용하면 이러한 문제들 없이 한 번의 호출로 여러 보상 메서드를 처리할 수 있게 된다.
//delegate 선언
public delegate void RewardDelegate(int coin, int point, int exp);
public class Program
{
static int userCoin = 0;
static int userPoint = 0;
static int userExp = 0;
// 보상을 위한 메서드들
static void PlusCoin(int coin, int point, int exp) => userCoin += coin;
static void PlusPoint(int coin, int point, int exp) => userPoint += point;
static void PlusExp(int coin, int point, int exp) => userExp += exp;
static void Main(string[] args)
{
// delegate에 메서드들 등록
RewardDelegate reward = PlusCoin;
reward += PlusPoint;
reward += PlusExp;
// delegate로 보상 호출
reward(100, 30, 40);
// 결과 출력
Console.WriteLine($"코인: {userCoin}, 점수: {userPoint}, 경험치: {userExp}");
}
}
위 코드처럼 delegate에 여러 메서드를 할당하고 한 번에 호출할 수 있다는 점이 정말 편리했다!
마무리😺
아직까지 프로그래밍을 하면서 "여기서 delegate를 써야겠다!"라는 상황이 많이는 없었지만, 앞으로 개발을 진행하다 보면 분명 적절하게 사용할 수 있는 순간이 올 테니 delegate라는 개념을 잊지 않고 기억해뒀다 더 나은 코드와 구조를 위해 언제든지 delegate를 유연하게 사용할 수 있도록 해야겠다!
'내일배움캠프' 카테고리의 다른 글
Newtonsoft.Json을 사용한 게임 데이터 저장(내일배움캠프 10일차) (1) | 2024.09.25 |
---|---|
내일배움캠프내일배움캠프 게임개발 과정 9일차: 실수형 난수 사용 (0) | 2024.09.24 |
내일배움캠프 게임개발 과정 7일차: Ref 와 Out 키워드 (0) | 2024.09.20 |
내일배움캠프 게임개발 과정 6일차: float 데이터형 끼리의 비교 (2) | 2024.09.19 |
내일배움캠프 게임개발 과정 5일차 (0) | 2024.09.13 |