=> 연산자(C# 참조)=> operator (C# reference)

=> 토큰은 람다 연산자식 본문 정의의 멤버 이름과 멤버 구현의 구분자라는 두 가지 형식으로 지원됩니다.The => token is supported in two forms: as the lambda operator and as a separator of a member name and the member implementation in an expression body definition.

람다 연산자Lambda operator

람다 식에서 람다 연산자 =>은 왼쪽의 입력 매개 변수를 오른쪽의 람다 본문과 구분합니다.In lambda expressions, the lambda operator => separates the input parameters on the left side from the lambda body on the right side.

다음 예제에서는 메서드 구문이 포함된 LINQ 기능을 사용하여 람다 식의 사용법을 보여줍니다.The following example uses the LINQ feature with method syntax to demonstrate the usage of lambda expressions:

string[] words = { "bot", "apple", "apricot" };
int minimalLength = words
  .Where(w => w.StartsWith("a"))
  .Min(w => w.Length);
Console.WriteLine(minimalLength);   // output: 5

int[] numbers = { 1, 4, 7, 10 };
int product = numbers.Aggregate(1, (interim, next) => interim * next);
Console.WriteLine(product);   // output: 280

람다 식의 입력 매개 변수는 컴파일 시 강력한 형식을 지정합니다.Input parameters of a lambda expression are strongly typed at compile time. 위의 예제와 같이 컴파일러가 입력 매개 변수의 형식을 추론하는 경우, 형식 선언을 생략할 수 있습니다.When the compiler can infer the types of input parameters, like in the preceding example, you may omit type declarations. 입력 매개 변수의 형식을 지정해야 하는 경우 다음 예제와 같이 각 매개 변수에 대해 입력매개 변수를 지정해야 합니다.If you need to specify the type of input parameters, you must do that for each parameter, as the following example shows:

int[] numbers = { 1, 4, 7, 10 };
int product = numbers.Aggregate(1, (int interim, int next) => interim * next);
Console.WriteLine(product);   // output: 280

다음 예제에서는 입력 매개 변수 없이 람다 식을 정의하는 방법을 보여줍니다.The following example shows how to define a lambda expression without input parameters:

Func<string> greet = () => "Hello, World!";
Console.WriteLine(greet());

자세한 내용은 람다 식을 참조하세요.For more information, see Lambda expressions.

식 본문 정의Expression body definition

식 본문 정의의 일반 구문은 다음과 같습니다.An expression body definition has the following general syntax:

member => expression;

여기서 expression은(는) 유효한 식입니다.where expression is a valid expression. expression의 반환 형식은 구성원의 반환 형식으로 암시적으로 변환할 수 있어야 합니다.The return type of expression must be implicitly convertible to the member's return type. 구성원의 반환 형식이 void이거나 구성원이 생성자, 종료자 또는 속성 set 접근자인 경우 expression식 문이어야 하며 모든 형식을 사용할 수 있습니다.If the member's return type is void or if the member is a constructor, a finalizer, or a property set accessor, expression must be a statement expression, which can be of any type.

다음 예제에서는 Person.ToString 메서드에 대한 식 본문 정의를 보여줍니다.The following example shows an expression body definition for a Person.ToString method:

public override string ToString() => $"{fname} {lname}".Trim();

다음과 같은 메서드 정의의 약식 버전입니다.It's a shorthand version of the following method definition:

public override string ToString()
{
   return $"{fname} {lname}".Trim();
}

메서드, 연산자 및 읽기 전용 속성에 대한 식 본문 정의는 C# 6부터 지원됩니다.Expression body definitions for methods, operators, and read-only properties are supported beginning with C# 6. 생성자, 종료자, 속성 및 인덱서 접근자에 대한 식 본문 정의는 C# 7.0부터 지원됩니다.Expression body definitions for constructors, finalizers, and property and indexer accessors are supported beginning with C# 7.0.

자세한 내용은 식 본문 멤버를 참조하세요.For more information, see Expression-bodied members.

연산자 오버로드 가능성Operator overloadability

=> 연산자를 오버로드할 수 없습니다.The => operator cannot be overloaded.

C# 언어 사양C# language specification

람다 연산자에 대한 자세한 내용은 C# 언어 사양익명 함수 식 섹션을 참조하세요.For more information about the lambda operator, see the Anonymous function expressions section of the C# language specification.

참고 항목See also