반응형
무명 메서드(Anonymous Methods)
2.0보다 이전 버전의 C#에서는 명명된 메서드를 사용하는 방법으로만 대리자를 선언할 수 있었습니다. C# 2.0에는 무명 메서드가 도입되었고 C# 3.0 이상에서는 무명 메서드 대신 람다 식을 사용하여 인라인 코드를 작성하는 방법이 더 선호됩니다. 그러나 이 항목에서 설명하는 무명 메서드에 대한 내용은 람다 식에도 적용됩니다. 무명 메서드에는 람다 식에 없는 기능이 한 가지 있습니다. 무명 메서드를 사용하면 매개 변수 목록을 생략할 수 있으며, 이는 무명 메서드가 여러 시그니처를 가진 대리자로 변환될 수 있음을 의미합니다.
무명 메서드를 사용하면 별도의 메서드를 만들 필요가 없으므로 대리자를 인스턴스화하는 데 따르는 코딩 오버헤드를 줄일 수 있습니다.
[C# 6.0이 나온지가 언제인데...지금 공부를 하는것인가..]
무명 메서드는 람다식과 함께 익명 함수로 불립니다.
다음과 같은 형식을 명명된 메서드라고 합니다. (이름있는 함수..라고 하면 되겠지요?)
void Method(int number) { /* ... */ }
쉽게 무명 메서드는 델리게이트와 연결할때 기존에는 명명된 메서드(선언과 정의된 함수)를 사용했지만만 무명 메서드는 선언을 하지 않고 정의만 하여 사용한다고 생각 할 수 있을 것 같습니다.
delegate void TestDelegate(int _number);
static void Main(string[] args)
{
TestDelegate Test = delegate(int _num)
{
Console.WriteLine("무명 메소드 테스트 = {0}", _num);
};
Test(5);
}
[실행 결과]
무명 메서드와 명명된 메서드를 델리게이트로 연결하는 예제입니다.
delegate void TestDelegate(int _number);
static void Main(string[] args)
{
TestDelegate Test = delegate(int _num)
{
Console.WriteLine("무명 메서드 테스트 = {0}", _num);
};
Test(5);
Test = new TestDelegate(Mydelegate);
Test(10);
}
static void Mydelegate(int _num)
{
Console.WriteLine("명명된 메서드 테스트 = {0}", _num);
}
[결과]
반응형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] yield 키워드 (0) | 2016.10.29 |
---|---|
[C#] where & Generics (형식 제약 조건) (0) | 2016.10.29 |
[C#] IEnumerable , IEnumerator 인터페이스 (0) | 2016.09.29 |
[C#] 람다식 (lambda) - 1 (0) | 2016.09.25 |
[C#] 값 형식 & 참조형식 (Value Type & Reference Type) (0) | 2016.09.25 |