我正在深入阅读 Jon Skeet 的 C# 并遇到了对C# 3中自动实现属性的解释。
代码是:
class Product
{
public string Name { get; private set; }
public decimal Price { get; private set; }
public Product(string name, decimal price)
{
Name = name;
Price = price;
}
Product() {}
public static List<Product> GetSampleProducts()
{
return new List<Product>
{
new Product { Name="West Side Story", Price = 9.99m },
new Product { Name="Assassins", Price=14.99m },
new Product { Name="Frogs", Price=13.99m },
new Product { Name="Sweeney Todd", Price=10.99m}
};
}
}
解释这一点的文字是
现在属性没有任何代码(或可见变量!)与之关联,并且您正在以非常不同的方式构建硬编码列表。由于没有要访问的名称和价格变量,您不得不在类中的任何地方使用属性,从而提高一致性。为了新的基于属性的初始化,您现在有一个私有的无参数构造函数。(在设置属性之前为每个项目调用此构造函数。)在此示例中,您可以完全删除公共构造函数,但没有外部代码可以创建其他产品实例。
我无法将头绕在以粗体标记的部分。它说私有构造函数用于自动实现的属性,并且每次在设置之前都会调用它。但是,即使我在其中放置了一个控制台,它也没有被调用。即使删除了私有构造函数,代码也运行良好。
我知道私有构造函数在 C# 中的作用,但如果它来自上面的文本,我无法理解它与自动实现的属性有何关系。