Menu
CoddyTech

自动实现的属性

本课属于 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 中进行验证或编写自定义逻辑,自动实现的属性就很合适。它们能让你的类保持简洁,并显著减少样板代码。

challenge icon

挑战

简单

让我们使用自动实现的属性构建一个简单的库存系统,用来跟踪商店中的商品。

你将创建两个文件来组织代码:

  • 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}
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: C# 在线编译器