식 본문 멤버
Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 70개 중 14번째.
Expression 본문 멤버는 단일 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 멤버는 로직이 단순할 때 코드를 더 읽기 쉽게 만들어 줍니다. 간단한 작업에는 이를 사용하되, 여러 문장이나 복잡한 로직이 필요할 때는 전통적인 본문을 사용하세요.
챌린지
쉬움표현식 본문 멤버를 활용해 깔끔하고 간결한 코드를 작성하는 강력한 방법을 보여 주는 제품 가격 계산기를 만들어 보겠습니다.
코드를 정리하기 위해 두 개의 파일을 만듭니다:
Product.cs:Storenamespace에Productclass를 Define합니다. 이 class에서는 다양한 표현식 본문 멤버를 보여 줍니다:- 자동 구현 property
Name(string) 및BasePrice(decimal) - 두 property를 모두 설정하는 표현식 본문 constructor
- base price의 10%를 calculates하는 표현식 본문 읽기 전용 property
TaxAmount - base price에 세금 amount를 더한 값을 반환하는 표현식 본문 읽기 전용 property
TotalPrice - discount amount(base price에 percentage를 곱한 후 100으로 나눈 값)을 반환하는 표현식 본문 method
GetDiscount(decimal percentage) - total price에서 discount를 뺀 값을 반환하는 표현식 본문 method
GetFinalPrice(decimal discountPercentage)
- 자동 구현 property
Program.cs: main 파일에서 input 값을 사용해Product를 Create한 다음 가격 내역을 표시합니다.
세 개의 input을 받습니다:
- 제품 이름
- Base price
- 적용할 discount percentage
다음 format으로 가격 details를 출력합니다:
Product: {Name}
Base Price: {BasePrice}
Tax (10%): {TaxAmount}
Total Price: {TotalPrice}
Discount ({percentage}%): {discountAmount}
Final Price: {finalPrice}예를 들어 input이 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모든 monetary value를 정확히 소수점 둘째 자리까지 format합니다. 예를 들어 value.ToString("F2") 또는 $"{value:F2}"를 사용할 수 있습니다. 이는 base price, tax, total, discount 및 final price 모두에 적용됩니다.
단일 expression을 포함하는 모든 멤버에 => 화살표 syntax를 사용하는 것을 잊지 마세요. 이렇게 하면 코드가 깔끔하고 읽기 쉬워집니다!
직접 해보기
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}");
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 C# 컴파일러