表达式主体成员
本课属于 Coddy C# 学习旅程的“面向对象编程”单元。第 14 课,共 70 课。
表达式体成员为只包含单个表达式的成员提供了简洁的语法。你可以使用 => 箭头语法,而不必用大括号编写完整的方法体或属性体。
对于只返回一个表达式的方法,你可以替换整个方法体:
// 传统方法
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;
}你也可以分别为属性的获取器和设置器使用表达式体:
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;
}当逻辑简单时,表达式主体成员可以让代码更易读。对于简单的操作,可以使用它们;如果需要多条语句或复杂逻辑,则应使用传统的方法体。
挑战
简单让我们来构建一个产品价格计算器,展示如何使用表达式体成员编写简洁清晰的代码。
你将创建两个文件来组织代码:
Product.cs:在Store命名空间中定义一个Product类。这个类应展示多种表达式体成员:- 自动实现的
Name(字符串)属性和BasePrice(十进制数)属性 - 一个同时设置这两个属性的表达式体构造函数
- 一个表达式体只读属性
TaxAmount,用于计算基础价格的 10% - 一个表达式体只读属性
TotalPrice,返回基础价格加税额 - 一个表达式体方法
GetDiscount(decimal percentage),返回折扣金额(基础价格乘以百分比,再除以 100) - 一个表达式体方法
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.00
Tax (10%): 100.00
Total Price: 1100.00
Discount (15%): 150.00
Final Price: 950.00请将每个金额格式化为恰好两位小数,例如 value.ToString("F2") 或 $"{value:F2}"。这同样适用于基础价格、税额、总价、折扣和最终价格。
记得对所有只包含一个表达式的成员使用 => 箭头语法。这样可以让代码保持简洁易读!
亲手试试
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# 在线编译器