728x90
1. 무명 메서드는 선언 시에 반환 형식을 지정하지 않는다
delegate (int a, int b) { return a * b; };
2. 메서드 인수와 대리자 선언의 시그니처는 일치해야한다
명명된 메서드를 대지라에 할당할 때와 비슷한 경우
private static Func<int, int, int> AreaRectangleDelegate =
delegate (int a, int b) { return a * b; };
(두개의 int 형식 인수와 int값 반환)
3. 무명 메서드에서 선언한 변수와 같은 이름의 변수를 선언할 수 없다 (.NET 6.0에서는 실행이된다 호엥??)
private static void Conflict()
{
for (int i = 0; i < numbers; i++)
{
Action<int> actDelegate = delegate (int i)
{
Console.WriteLine("{0}", i);
};
actDelegate(i);
}
}
※ Conflict() 메서드와 actDelegate 대리자에서 각각 i를 선언하고 있기 때문에 이 코드는 컴파일 오류가 나야한다
무명 메서드의 장점
- 메서드에 이름을 부여하지 않으므로 일회용 메서드에 적합하다
- 논리를 구현하는 코드를 실제로 사용하는 곳에 작성할 수 있다
- 무명 메서드를 할당 할 대리자의 시그니처로부터 유추가 가능하기 때문에 무명 메서드 선언 시에는 반환 형식을 작성할 필요가 없다
- 무명 메서드를 감싸고 있는 외부 메서드의 지역 변수를 참조할 수 있다. 이때, 외부의 변수들은 무명 메서드 내에서 캡쳐된다
- 간단한 논리 구현을 위해 매번 명명된 메서드를 만들 필요가 없다
728x90
'c#' 카테고리의 다른 글
[C#] 의미없는 구조체 (0) | 2023.01.26 |
---|---|
[C#] Out of Memory (0) | 2023.01.26 |
[C#] 무명 메서드 (0) | 2023.01.25 |
LiveCharts 코드 비하인드 (0) | 2023.01.19 |
[Unity] 오브젝트 실행 순서 (0) | 2023.01.18 |