본문 바로가기
게임개발/게임 클라이언트 프로그래밍

c# 대리자 및 람다

by pudding81 2024. 1. 29.

C#에서 대리자는 메서드에 대한 참조를 나타내는 형식입니다.
대리자는 메서드의 매개 변수 목록과 반환
식이 일치하는 경우에만 해당 메서드를 참조할 수 있습니다. 대리자를 사용하면 메서드를 다른 메서드의 인수로 전달하거나 메서드를 호출할 수 있습니다.
 

  • Action<>은 대리자의 인수를 사용하여 작업을 수행해야 할 때 사용됩니다. 캡슐화된 메서드가 값을 반환하지 않습니다.
  • Func<>는 일반적으로 변환을 수행해야 할 때 사용됩니다. 즉, 대리자의 인수를 다른 결과로 변환해야 할 때 사용됩니다. 프로젝션은 좋은 예입니다. 캡슐화된 메서드가 지정된 값을 반환합니다.
  • Predicate<>는 인수가 대리자의 조건을 충족하는지 확인해야 할 때 사용됩니다. 이를 Func<T, bool>로 작성할 수도 있습니다. 즉, 메서드가 부울 값을 반환한다는 의미입니다.

 
 
람다 식은 대리자 사용에 더 편리한 구문입니다.
람다 식은 매개 변수 목록과 식이나 문 블록을 선언하지만 고유한 이름이 없습니다. 람다 식은 대리자 형식이나 식 트리 형식으로 변환할 수 있습니다. 람다 식은 LINQ 쿼리와 같은 코드에서 익명 함수를 만들거나 전달하는 데 유용합니다. 람다 식의 기본 형식은 다음과 같습니다.

(input-parameters) => expression-or-statement-block

//예를 들어, 다음 람다 식은 매개 변수 x를 받아서 x의 제곱을 반환합니다.
x => x * x

//이 람다 식은 다음과 같은 대리자 형식으로 변환할 수 있습니다.
Func<int, int> square = x => x * x;

//또는 다음과 같은 식 트리 형식으로 변환할 수 있습니다.
Expression<Func<int, int>> e = x => x * x;



 람다 식을 사용할 때 주의해야 할 점은 다음과 같습니다.

1.
람다 식 안에서는 새로운 변수를 선언할 수 없습니다. 반환값 부분은 변수 없이 식 한 줄로 표현할 수 있어야 합니다

2.
람다 식은 이름이 없고 문서화도 할 수 없습니다. 따라서 코드 자체로 동작이 명확히 설명되지 않거나 코드 줄 수가 많아지면 람다 식을 사용하지 않는 것이 좋습니다

3.
람다 식에서 외부 지역 변수를 사용할 때는 해당 변수가 final이거나 final과 동등한 효과를 가지도록 해야 합니다. 그렇지 않으면 컴파일 오류가 발생하거나 예상치 못한 결과가 나올 수 있습니다
 

'게임개발 > 게임 클라이언트 프로그래밍' 카테고리의 다른 글

PirateBomb(1) BombGuy  (0) 2024.02.01
Cat Climb Cloud  (1) 2024.01.31
Mathf.Clamp  (0) 2024.01.29
고양이 탈출 게임  (0) 2024.01.29
Space.world  (0) 2024.01.29