странная переменная структура, которую я никогда не видел, - PullRequest
1 голос
/ 30 апреля 2020

Кто-нибудь может объяснить это утверждение var в C#? Я не могу git этот идентификатор, что это значит? (доступные элементы, элементы предварительного заказа)

var (availableItems, preorderItems) = await order.GetDifferentiatedProductDataAsync<OrderItemData>(_sort, _products);

1 Ответ

2 голосов
/ 30 апреля 2020

Это, очевидно, новый синтаксис. И да, меня это тоже сбивает с толку.

var (availableItems, preorderItems) = await order.GetDifferentiatedProductDataAsync<OrderItemData>(_sort, _products);

Это объявляет две переменные - var availableItems и var preorderItems.

order.GetDifferentiatedProductDataAsync<OrderItemData>(_sort, _products);, очевидно, возвращает два значения в кортеж. Но работать с кортежами раздражает напрямую. Поэтому вместо этого присваивание разделяет значения этого кортежа по этим двум переменным.

Согласно ссылке Дмитрия, вы "деконструируете" кортеж, который возвращает order.GetDifferentiatedProductDataAsync<OrderItemData>(_sort, _products);, разбивая его на две нормальные переменные, с которыми вы можете легко работать с.

Я предполагаю, что эквивалент будет:

var temp = await order.GetDifferentiatedProductDataAsync<OrderItemData>(_sort, _products);
var availableItems = temp.Item1;
var preorderItems = temp.Item2;

Item1, Item2 и т.п. всегда действительны для адресации указанных полей c кортежа в порядке объявления. Именование полей для кортежей было на самом деле более поздним дополнением и совершенно необязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...