c# создание списка <T>с использованием вопроса AS ... для начинающих - PullRequest
0 голосов
/ 18 апреля 2020

Я на начальных этапах обучения c# и в настоящее время "чиню" проект (как упражнение).

Я сталкивался с этим кодом, но не могу понять его.

List<CartLine> cartList = Lines as List<CartLine>;

До сих пор мое использование списков было довольно стандартным

List<T> newList = new List<T>

и подобных конструкций.

Я в основном зациклен на том, куда пошло ключевое слово "new" и что на самом деле здесь делает "as". Есть ли другой способ написания приведенного выше кода, с которым я могу быть более знаком (чтобы обернуться)?

К вашему сведению "CartLine" - это класс:

    {
        public int OrderLineId { get; set; }
        public Product Product { get; set; }
        public int Quantity { get; set; }
    }

и Lines - это связанный с IEnumerable

public IEnumerable<CartLine> Lines => GetCartLineList();

Извините, если это немного очевидно для многих из вас. Я прочитал документацию MS AS, но все еще немного потерян, и я не могу получить отличные результаты поиска относительно его использования.

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

In C# 'as' используется для безопасного броска. Если объект не может быть приведен к нужному типу, он возвращает ноль.

Linq IEnumerable.ToList() вставляет все элементы Enumerable<T> в новый List<T>. Только список будет новым объектом, отдельные элементы будут одинаковыми.

1 голос
/ 18 апреля 2020

Ключевое слово as используется для выполнения приведения, в котором вы обрабатываете переменную одного типа, чтобы действовать как другой тип. Из вашего источника кажется, что автор хотел привести IEnumerable к List, чтобы они могли использовать свойства List. Исходя из этот вопрос , enumerable.ToList(); кажется более подходящим, чем приведение.

using System.Linq; // At the top of the file

List<CartLine> cartList = Lines.ToList();
...