Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

닷넷! Ver 2.0~

.NET은 순식간(?)에 버전업 되었습니다. 이는 신기술의 탄생도 동반했습니다 .NET 2.0 , .NET 3.0, .NET 3.5 등 새로운 기능 및 확장된 기능에 대해 다룹니다

익명 메서드(Anonymous Methods)

작성자 : 박종명
최초 작성일 : 2008-05-13 (화요일)
최종 수정일 : 2008-05-13 (화요일)
조회 수 : 2893

* 익명 메서드 (Anonymous Methods)

 

닷넷 2.0에 새롭개 추가된 개념인 익명 메서드에 대해 살펴보자.

 

익명(Anonymous) 이란 사전적인 의미로 신원불명의’,’이름을 밝히지 않는이라는 뜻을 지닌다.

닷넷에서의 익명 메서드란 메서드의 정체를 알 수 없어도 메서드 역할을 할 수 있도록 해 주는 간결성의 장점을 살린 개념이라 할 수 있다.

 

닷넷의 델리게이트(Delegate) 는 메서드에 대한 호출 참조값을 가짐으로서 메서드 호출을 대리하는 역할을 하는 타입이다.

 

즉 메서드가 있어야 델리게이트는 생성하고 실행할 수 있었다. 다음의 예제를 보자

 

delegate void MyDelegate();

class Program

{       

     static void Main(string[] args)

     {

         MyClass myClass = new MyClass();

         MyDelegate myDelegate = new MyDelegate(myClass.Start);

         myDelegate();

}

}

class MyClass

{

     public void Start()

     {

         Console.WriteLine("시작합니다");

     }

}

 

위의 코드를 보면 MyDelegate 라는 델리게이트를 선언한 후,

MyClass 의 객체(myClass) Start() 메서드를 참조로 하는 myDelegate 를 생성하고  myDelegate() 로 델리게이트를 호출함으로써 실제로 MyClass Start() 메서드를 간접적으로 호출하고 있다.

 

이것을 익명메서드 기법을 사용하면 다음과 같이 간결해 진다.

 

delegate void MyDelegate();

class Program

{       

     static void Main(string[] args)

     {

        MyDelegate myDelegate = delegate() { Console.WriteLine("시작합니다"); };

        myDelegate();

     }

}

 

 

델리게이트를 생성할 때 더 이상 참조하는 메서드의 정의가 필요 없어진 것이다. 메서드의 내용을 직접 델리게이트
생성시 명시하는 기법을 익명메서드라 한다.
보통 이를 가르켜 인라인 형태로 처리한다고 한다.

즉 메서드가 별도로 정의된 것이 아니라 메서드의 내용(코드)이 델리게이트 생성시 포함된다고 하여 인라인(Inline) 이라 하는 것이다.

 

 

델리게이트는 닷넷의 이벤트를 위해 사용되기도 하는데,  아래과 같은 코드는 일반적인 방식으로 이벤트를 사용하는 예이다.

this.button1.Click += new System.EventHandler(this.button1_Click);

 

EventHandler 는 아래와 같이 선언된 델리게이트 이다

public delegate void EventHandler (

               Object sender,

               EventArgs e

)

 

그리고 이 델리게이트는의 실행시 다음과 같은 메서드가 호출된다.

private void button1_Click(object sender, EventArgs e){ …  }

이런 전통적인 프로그래밍 기법을 익명메서드를 사용하면 다음과 같이 간결해 진다.


This.button1.Click += delegate { … }

 

 

위 코드는 이전코드와 정확히 같은 일을 수행할 수 있다.

 

 

이렇듯 닷넷 2.0에 새롭게 추가된 익명메서드를 사용함으로써 메서드의 명시적인 정의없이 델리게이트 생성시 인라인 형태로 코드를 작성할 수 있게 함으로써 프로그램의 간결성과 편의성을 도왔다고 볼 수 있다.

이름
비밀번호
홈페이지
KB <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요