Объявите поле списка и конструктор в пользовательском классе в C# - PullRequest
0 голосов
/ 15 апреля 2020

Итак, я учусь C#, используя учебник "Мураха C# 2015". В главе 13 на стр. 411 имеется следующий код:

public class ProductList
{
    private List<Product> products;

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

Итак, первая строка «publi c class ProductList» объявляет класс

Вторая строка «private List products»; " объявляет переменную класса (ie: "Поле") ... которая в данном случае является списком ... Я не понимаю этого? Все, что я узнал до сих пор, это то, что список инициализируется так:

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

Кто-нибудь может мне это объяснить? Это так, как это всегда делается для списка? Или это короткая рука? Есть ли другие способы go об этом?

Я понимаю, что следующая часть кода является конструктором, то есть:

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

И я вижу "новый" ключ Слово, которое я привык видеть в списке.

1 Ответ

1 голос
/ 15 апреля 2020
private List<Product> products;

Это объявляет поле. Т.е. сообщает компилятору, что класс содержит поле этого типа. Ему будет присвоено значение по умолчанию для типа (т. Е. В данном случае ноль), если не будет сделано что-то еще.

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

Это комбинированное объявление и инициализация. Он делает то же самое, что и выше, но также присваивает поле вновь созданному объекту. В вашем случае примеры эквивалентны. Но рассмотрим

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

Здесь мы должны разделить объявление и инициализацию, так как нам нужен некоторый параметр для инициализации.

...