식 본문 멤버
Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 70개 중 14번째.
식 본문 멤버(Expression-bodied members)는 단일 식만 포함하는 멤버를 위한 간결한 구문을 제공합니다. 중괄호를 사용하여 전체 메서드 또는 속성 본문을 작성하는 대신, => 화살표 구문을 사용합니다.
단일 식을 반환하는 메서드의 경우, 본문 전체를 다음과 같이 바꿀 수 있습니다:
// 전통적인 메서드
public int Add(int a, int b)
{
return a + b;
}
// 식 본문 메서드
public int Add(int a, int b) => a + b;이 구문은 읽기 전용 속성에도 작동하며, 이미 짧게 살펴보았습니다:
public class Circle
{
public double Radius { get; set; }
public double Area => Math.PI * Radius * Radius;
public double Circumference => 2 * Math.PI * Radius;
}속성 getter와 setter에 대해 개별적으로 식 본문(expression body)을 사용할 수도 있습니다:
private string name;
public string Name
{
get => name;
set => name = value.Trim();
}생성자도 단일 문을 포함하는 경우 이 구문을 사용할 수 있습니다:
public class Person
{
public string Name { get; }
public Person(string name) => Name = name;
}식 본문 멤버(Expression-bodied members)는 로직이 간단할 때 코드를 더 읽기 쉽게 만들어 줍니다. 간단한 연산에는 이를 사용하되, 여러 문장이나 복잡한 로직이 필요한 경우에는 기존의 본문 형식을 유지하세요.
챌린지
쉬움깔끔하고 간결한 코드를 작성하기 위해 식 본문 멤버(expression-bodied members)의 강력함을 보여주는 제품 가격 계산기를 만들어 보겠습니다.
코드를 정리하기 위해 두 개의 파일을 생성합니다:
Product.cs:Store네임스페이스 내에Product클래스를 정의합니다. 이 클래스는 다양한 식 본문 멤버를 보여주어야 합니다:- 자동 구현 속성인
Name(string)과BasePrice(decimal) - 두 속성을 모두 설정하는 식 본문 생성자
- 기본 가격의 10%를 계산하는 식 본문 읽기 전용 속성
TaxAmount - 기본 가격에 세액을 더한 값을 반환하는 식 본문 읽기 전용 속성
TotalPrice - 할인 금액(기본 가격에 백분율을 곱하고 100으로 나눈 값)을 반환하는 식 본문 메서드
GetDiscount(decimal percentage) - 총 가격에서 할인을 뺀 값을 반환하는 식 본문 메서드
GetFinalPrice(decimal discountPercentage)
- 자동 구현 속성인
Program.cs: 메인 파일에서 입력 값을 사용하여Product를 생성한 다음, 가격 내역을 표시합니다.
세 가지 입력을 받게 됩니다:
- 제품 이름
- 기본 가격
- 적용할 할인율
다음 형식으로 가격 세부 정보를 출력하세요:
Product: {Name}
Base Price: {BasePrice}
Tax (10%): {TaxAmount}
Total Price: {TotalPrice}
Discount ({percentage}%): {discountAmount}
Final Price: {finalPrice}예를 들어, 입력값이 Laptop, 1000, 15인 경우 출력은 다음과 같아야 합니다:
Product: Laptop
Base Price: 1000
Tax (10%): 100
Total Price: 1100
Discount (15%): 150
Final Price: 950단일 식을 포함하는 모든 멤버에 대해 => 화살표 구문을 사용하는 것을 잊지 마세요. 이를 통해 코드를 깔끔하고 읽기 쉽게 유지할 수 있습니다!
치트 시트
식 본문 멤버(Expression-bodied members)는 단일 식을 포함하는 멤버에 대해 => 화살표 구문을 사용하여, 기존의 메서드 및 속성 본문에 대한 간결한 대안을 제공합니다.
식 본문 메서드:
// 기존 메서드
public int Add(int a, int b)
{
return a + b;
}
// 식 본문 메서드
public int Add(int a, int b) => a + b;식 본문 읽기 전용 속성:
public class Circle
{
public double Radius { get; set; }
public double Area => Math.PI * Radius * Radius;
public double Circumference => 2 * Math.PI * Radius;
}식 본문 속성 getter 및 setter:
private string name;
public string Name
{
get => name;
set => name = value.Trim();
}식 본문 생성자:
public class Person
{
public string Name { get; }
public Person(string name) => Name = name;
}간단한 연산에는 식 본문 멤버를 사용하세요. 여러 문장이나 복잡한 로직의 경우에는 기존의 본문 형식을 사용하세요.
직접 해보기
using System;
using Store;
class Program
{
public static void Main(string[] args)
{
// 입력값 읽기
string name = Console.ReadLine();
decimal basePrice = Convert.ToDecimal(Console.ReadLine());
decimal discountPercentage = Convert.ToDecimal(Console.ReadLine());
// TODO: 입력값을 사용하여 Product 객체 생성
// TODO: GetDiscount 메서드를 사용하여 할인 금액 계산
// TODO: GetFinalPrice 메서드를 사용하여 최종 가격 계산
// TODO: 다음 형식으로 가격 상세 정보 출력:
// Product: {Name}
// Base Price: {BasePrice}
// Tax (10%): {TaxAmount}
// Total Price: {TotalPrice}
// Discount ({percentage}%): {discountAmount}
// Final Price: {finalPrice}
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.