C# 문법 4주차 - 람다

Amberjack·2024년 1월 2일
0

C# 문법

목록 보기
29/44
post-custom-banner

✨ 람다(Lambda)

🤔 람다란?

  • 람다는 익명 메서드를 만드는 방법!
  • 람다를 사용하면 메서드의 이름 없이 메서드를 만들 수 있다.
  • 람다는 델리게이트를 사용하여 변수에 할당하거나, 메서드의 매개변수로 전달할 수 있다.

▪️ 람다 구현

  • 형식
(parameter_list) => expression
  • 정의하기
Calculate calc = (x, y) => 				
{	
		return x + y;					
};

Calculate calc = (x, y) => x + y;

▪️ 사용 예제)

using System;

// 델리게이트 선언
delegate void MyDelegate(string message);

class Program
{
    static void Main()
    {
        // 델리게이트 인스턴스 생성 및 람다식 할당
        MyDelegate myDelegate = (message) =>
        {
            Console.WriteLine("람다식을 통해 전달된 메시지: " + message);
        };

        // 델리게이트 호출
        myDelegate("안녕하세요!");

        Console.ReadKey();
    }
}

람다는 이름이 없기 때문에 델리게이트가 참조하도록 하여 델리게이트를 통해 호출할 수 있다.

예시) 게임의 분기 시작을 알리기

// 델리게이트 선언
public delegate void GameEvent();

// 이벤트 매니저 클래스
public class EventManager
{
    // 게임 시작 이벤트
    public event GameEvent OnGameStart;

    // 게임 종료 이벤트
    public event GameEvent OnGameEnd;

    // 게임 실행
    public void RunGame()
    {
        // 게임 시작 이벤트 호출
        // OnGameStart에 연결되어 있는 모든 함수 실행
        OnGameStart?.Invoke();

        // 게임 실행 로직

        // 게임 종료 이벤트 호출
        // OnGameEnd에 연결되어 있는 모든 함수 실행
        OnGameEnd?.Invoke();
    }
}

// 게임 메시지 클래스
public class GameMessage
{
    public void ShowMessage(string message)
    {
        Console.WriteLine(message);
    }
}

// 게임 실행
static void Main()
{
    // 이벤트 매니저 객체 생성
    EventManager eventManager = new EventManager();

    // 게임 메시지 객체 생성
    GameMessage gameMessage = new GameMessage();

    // 게임 시작 이벤트에 람다 식으로 메시지 출력 동작 등록
    eventManager.OnGameStart += () => gameMessage.ShowMessage("게임이 시작됩니다.");

    // 게임 종료 이벤트에 람다 식으로 메시지 출력 동작 등록
    eventManager.OnGameEnd += () => gameMessage.ShowMessage("게임이 종료됩니다.");

    // 게임 실행
    eventManager.RunGame();
}
post-custom-banner

0개의 댓글