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
Posted by 바르마스
,