自动实现的属性
本课属于 Coddy C# 学习旅程的“面向对象编程”单元。第 10 课,共 70 课。
自动实现的属性让你无需编写显式的后备字段即可声明属性。编译器会在幕后自动创建一个隐藏的私有字段。
不要编写这么冗长的代码:
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}你只需写:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}你也可以直接在声明中设置默认值:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}如果不需要在 getter 或 setter 中进行验证或编写自定义逻辑,自动实现的属性就很合适。它们能让你的类保持简洁,并显著减少样板代码。
挑战
简单让我们使用自动实现的属性构建一个简单的库存系统,用来跟踪商店中的商品。
你将创建两个文件来组织代码:
Item.cs:在Inventory命名空间中定义一个Item类,并为Name(字符串)、Price(decimal)和InStock(bool)创建自动实现的属性。设置默认值:Name的默认值为"Unknown",Price的默认值为0.0m,InStock的默认值为true。Program.cs:在主文件中,使用对象初始化器创建两个Item对象。从输入中读取每件商品的名称和价格,然后输出每件商品的详细信息。
你将收到 4 个输入:
- 第一件商品的名称
- 第一件商品的价格
- 第二件商品的名称
- 第二件商品的价格
按照以下格式输出每件商品的信息:
Item: {Name}, Price: {Price}, In Stock: {InStock}例如,如果输入是 Laptop、999.99、Mouse 和 25.50,输出应为:
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: True亲手试试
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// 读取第一个商品的输入
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// 读取第二个商品的输入
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: 使用对象初始化器创建两个 Item 对象
// 根据输入值设置 Name 和 Price 属性
// TODO: 按以下格式打印每个商品的详细信息:
// Item: {Name}, Price: {Price}, In Stock: {InStock}
}
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: C# 在线编译器