연산자는 delegate 대리자 형식으로 변환할 수 있는 익명 메서드를 만듭니다.
C# 언어 참조는 가장 최근에 릴리스된 C# 언어 버전을 문서화합니다. 또한 예정된 언어 릴리스의 공개 미리 보기 기능에 대한 초기 설명서도 포함되어 있습니다.
설명서는 언어의 마지막 세 버전 또는 현재 공개 미리 보기에서 처음 도입된 기능을 식별합니다.
팁 (조언)
C#에서 기능이 처음 도입된 시기를 찾으려면 C# 언어 버전 기록에 대한 문서를 참조하세요.
무명 메서드를 형식(예: 및 System.Func<TResult>)으로 System.Action 변환할 수 있습니다. 많은 메서드는 이러한 형식을 인수로 사용합니다.
Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(3, 4)); // output: 7
비고
람다 식은 익명 함수를 만드는 보다 간결하고 표현적인 방법을 제공합니다. => 연산자를 사용하여 람다 식을 생성합니다.
Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 4)); // output: 7
외부 변수 캡처와 같은 람다 식의 기능에 대한 자세한 내용은 람다 식을 참조하세요.
연산자를 delegate 사용하는 경우 매개 변수 목록을 생략할 수 있습니다. 매개 변수 목록을 생략하면 다음 예제와 같이 매개 변수 목록을 사용하여 대리자 형식으로 변환할 수 있는 익명 메서드를 만듭니다.
Action greet = delegate { Console.WriteLine("Hello!"); };
greet();
Action<int, double> introduce = delegate { Console.WriteLine("This is world!"); };
introduce(42, 2.7);
// Output:
// Hello!
// This is world!
이 기능은 람다 식이 지원하지 않는 익명 메서드의 유일한 기능입니다. 다른 모든 경우에서는 람다 식을 사용하여 인라인 코드를 작성합니다. 무시를 사용하여 메서드에서 사용하지 않는 익명 메서드의 입력 매개 변수를 두 개 이상 지정할 수 있습니다.
Func<int, int, int> constant = delegate (int _, int _) { return 42; };
Console.WriteLine(constant(3, 4)); // output: 42
이전 버전과의 호환성을 위해 단일 매개 변수만 이름이 지정 _되면 컴파일러는 익명 메서드 내에서 해당 매개 변수의 이름으로 처리됩니다 _ .
익명 메서드를 static 선언할 때 한정자를 사용합니다.
Func<int, int, int> sum = static delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(10, 4)); // output: 14
정적 익명 메서드는 바깥쪽 범위에서 지역 변수 또는 인스턴스 상태를 캡처할 수 없습니다.
키워드를 delegate 사용하여 대리자 형식을 선언합니다.
컴파일러는 메서드 그룹에서 만든 대리자 개체를 캐시할 수 있습니다. 다음 방법을 고려하십시오.
static void StaticFunction() { }
메서드 그룹을 대리자에 할당하면 컴파일러가 대리자를 캐시합니다.
Action a = StaticFunction;
C# 언어 사양
자세한 내용은 C# 언어 사양Anonymous 함수 식 섹션을 참조하세요.
참고하십시오
.NET