在 C# 中的用户定义 class 中声明列表字段和构造函数

Declare list field and the constructor in a user defined class in C#

所以我正在使用 "Murach's C# 2015" 教科书学习 C#。在第 13 章第 411 页中,有一个代码:

public class ProductList
{
    private List<Product> products;

    public ProductList()
    {
        products = new List<Product>();
    }

所以第一行"public class ProductList"声明了一个class

第二行 "private List products;" 声明了一个 class 变量(即:"Field")...在本例中是一个列表...我不明白?到目前为止我所学到的是列表是这样初始化的:

private List<Product> products = new List<Product>();

谁能给我解释一下?这就是列表的处理方式吗?或者这是短手?还有其他方法吗?

我理解代码的下一部分是构造函数,即:

    public ProductList()
    {
        products = new List<Product>();
    }

我在这里看到了"new"关键字,这是我习惯看到的列表。

private List<Product> products;

这声明了字段。 IE。告诉编译器 class 包含此类型的字段。它将被分配该类型的默认值(即在本例中为 null),除非完成更多操作。

private List<Product> products = new List<Product>();

这是声明和初始化的组合。它的作用与上面相同,但还为该字段分配了一个新构造的对象。在您的情况下,这些示例是等效的。但考虑

public ProductList(int capacity)
{
    products = new List<Product>(capacity);
}

这里我们必须拆分声明和初始化,因为我们需要一些参数来进行初始化。