[C# 문법] C# 익명메서드 선언방법


안녕하세요.

 

오늘은 C#에서 제공해주는 문법인 익명메서드에 대해서 알아보려고 합니다.

 

익명메서드? 이름이 좀 생소하시죠?ㅎㅎ


 

익명메서드는 C# 2.0에서 도입된 기능으로써, 람다식과 비슷하지만 다음과 같은 기능을 지원하지는 않습니다.

 

-     매개변수 형식 생략

-     표현식 구문(익명 메서드는 반드시 문장 블록이어야 합니다.)

-     Expression<T>에 배정해서 표현식 트리로 컴파일

 

그럼 이제 익명 메서드를 어떻게 선언하는지 알아보도록 하겠습니다.

 

익명 메서드를 작성할 때에는 다음과 같이 delegate 키워드 다음에 매개변수 선언과 메서드 본문을 써줍니다. 예를 들어서 다음과 같은 대리자가 있습니다!

 

1

delegate int Transformer(int i);

cs

 

다음과 같이 익명 메서드를 대리자에 배정해서 호출합니다.

 

1

2

Transformer sqr = delegate (int x) { return x * x; };

Console.WriteLine(sqr(3));

cs

 


 

이제 그럼 위의 내용을 토대로 실제 예제 코드를 작성해 보도록 하겠습니다.

 

예제 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace test12

{

    class Program

    {

        //델리게이트 Add 선언

        delegate int Add(int x, int y);

 

        static void Main(string[] args)

        {

            //Add 익명 메서드 선언

            Add add = delegate (int x, int y) { return x + y; };

            Console.WriteLine("익명메서드 호출   : {0}", add(34));

 

            //람다를 이용한 익명메서드

            Add add2 = (x, y) => x + y;

 

            Console.WriteLine("람다를 이용한 익명 메서드 호출된  : {0}", add2(45));

        }

    }

}

 

Colored by Color Scripter

cs

 

실행 결과



 

위에 예제코드를 보시게 되면, 이제는 사실 람다를 이용하여 메서드를 쉽게 만들 수 있기 때문에 delegate 키워드를 이용하여 익명메서드를 사용하는 것 보다 람다를 이용하는 것을 추천 드리겠습니다.^^


감사합니다.


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY