식 본문 멤버
Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 70개 중 14번째.
Expression-bodied 멤버는 단 하나의 expression만 포함하는 멤버를 위한 간결한 구문을 제공합니다. 중괄호가 있는 전체 method나 property 본문을 작성하는 대신 => 화살표 구문을 사용합니다.
단일 expression을 반환하는 method의 경우, 전체 본문을 대체할 수 있습니다:
// 전통적인 메서드
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;
}Expression-bodied 멤버는 로직이 간단할 때 코드의 가독성을 높여줍니다. 간단한 작업에는 이를 사용하고, 여러 문장이 필요하거나 복잡한 로직이 필요한 경우에는 기존의 본문 방식을 유지하세요.
챌린지
쉬움깔끔하고 간결한 코드를 작성할 수 있는 표현식 본문(expression-bodied) 멤버의 유용성을 보여주는 제품 가격 계산기를 만들어 봅시다.
코드를 정리하기 위해 두 개의 파일을 생성합니다:
Product.cs:Storenamespace 내에Productclass를 정의합니다. 이 클래스는 다양한 표현식 본문 멤버를 보여주어야 합니다:- 자동 구현 프로퍼티인
Name(string) 및BasePrice(decimal) - 두 프로퍼티를 모두 설정하는 표현식 본문 constructor
- base price의 10%를 계산하는 표현식 본문 읽기 전용 프로퍼티
TaxAmount - base price에 tax amount를 더한 값을 반환하는 표현식 본문 읽기 전용 프로퍼티
TotalPrice - 할인 금액(base price 곱하기 percentage 나누기 100)을 반환하는 표현식 본문 method
GetDiscount(decimal percentage) - total price에서 discount를 뺀 값을 반환하는 표현식 본문 method
GetFinalPrice(decimal discountPercentage)
- 자동 구현 프로퍼티인
Program.cs: Main 파일에서 input 값을 사용하여Product를 만든 다음, 가격 세부 내역을 출력합니다.
세 개의 inputs을 입력받게 됩니다:
- 제품 이름 (Product name)
- 기본 가격 (Base price)
- 적용할 할인율 (Discount percentage)
다음 형식으로 가격 세부내역을 출력하세요:
Product: {Name}
Base Price: {BasePrice}
Tax (10%): {TaxAmount}
Total Price: {TotalPrice}
Discount ({percentage}%): {discountAmount}
Final Price: {finalPrice}예를 들어 inputs이 Laptop, 1000, 15인 경우 output은 다음과 같아야 합니다:
Product: Laptop
Base Price: 1000.00
Tax (10%): 100.00
Total Price: 1100.00
Discount (15%): 150.00
Final Price: 950.00모든 금액 값은 소수점 두 자리까지 정확히 포맷팅하세요 — 예를 들어 value.ToString("F2") 또는 $"{value:F2}"를 사용합니다. 이는 base price, tax, total, discount, final price 모두에 동일하게 적용됩니다.
단일 식을 포함하는 모든 멤버에는 => 화살표 구문을 사용하는 것을 잊지 마세요. 이렇게 하면 코드가 깔끔하고 가독성이 좋아집니다!
직접 해보기
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());
// 입력 값을 사용하여 Product 객체 생성
Product product = new Product(name, basePrice);
// GetDiscount 메서드를 사용하여 할인 금액 계산
decimal discountAmount = product.GetDiscount(discountPercentage);
// GetFinalPrice 메서드를 사용하여 최종 가격 계산
decimal finalPrice = product.GetFinalPrice(discountPercentage);
// 필수 형식으로 가격 세부 정보 출력:
Console.WriteLine($"Product: {product.Name}");
Console.WriteLine($"Base Price: {product.BasePrice:F2}");
Console.WriteLine($"Tax (10%): {product.TaxAmount:F2}");
Console.WriteLine($"Total Price: {product.TotalPrice:F2}");
Console.WriteLine($"Discount ({discountPercentage}%): {discountAmount:F2}");
Console.WriteLine($"Final Price: {finalPrice:F2}");
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.