IKeyValuePair<K,V> Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет пару "ключ-значение". Обычно он используется в качестве типа ограничения, когда необходимо инкапсулировать два параметра типа в один для удовлетворения ограничений другого универсального интерфейса.
.ЧИСТАЯ Этот интерфейс отображается как System.Collections.Generic.KeyValuePair<TKey,TValue> (структура, а не интерфейс). В любом случае, когда тип среда выполнения Windows реализует IKeyValuePair<K,V>, код .NET может использовать API KeyValuePair.
public interface class IKeyValuePair
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(45422889, 49604, 19070, 137, 64, 3, 18, 181, 193, 133, 0)]
template <typename K, typename V>
struct IKeyValuePair
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(45422889, 49604, 19070, 137, 64, 3, 18, 181, 193, 133, 0)]
public interface KeyValuePair<K,V>
Public Interface KeyValuePair(Of K, V)
Параметры типа
- K
- V
- Атрибуты
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0)
|
API contract |
Windows.Foundation.FoundationContract (появилось в v1.0)
|
Комментарии
При программировании с помощью .NET этот интерфейс скрыт, и разработчикам следует использовать структуру TKey,TValue> System.Collections.Generic.KeyValuePair<. В любом случае, когда тип среда выполнения Windows реализует IKeyValuePair<K,V>, в том числе когда интерфейсы унаследовали IKeyValuePair<K,V> или использовали его в качестве внутреннего ограничения, код .NET может рассматривать его как KeyValuePair .NET.
Пары "ключ-значение" используются в интерфейсе IMap<K,V> , когда он наследует IIterable<T>. Практические реализации IMap<K,V> являются итерируемыми, а итерация или вызов First/Current явным образом вернет экземпляры IKeyValuePair<K,V> с теми же ограничениями, что и реализация IMap<K,V> .
Функции расширения C++/WinRT
Примечание
Функции расширения существуют в типах проекций C++/WinRT для определенных API среда выполнения Windows. Например, winrt::Windows::Foundation::IAsyncAction — это тип проекции C++/WinRT для IAsyncAction. Функции расширения не являются частью поверхности двоичного интерфейса приложения (ABI) фактических типов среда выполнения Windows, поэтому они не перечислены как члены API среда выполнения Windows. Но их можно вызывать из любого проекта C++/WinRT. См. статью Функции C++/WinRT, расширяющие среда выполнения Windows API.
operator==
Сравнивая два объекта KeyValuePair , сравните ключи и значения, а не интерфейсы.
Структурированная привязка (C++/WinRT)
IKeyValuePair<K, V> поддерживает структурированную привязку. Например,
auto&& [key, value] = kvp;
эквивалентно ,
auto key = kvp.Key();
auto value = kvp.Value();
Структурированная привязка особенно удобна в циклах на основе for
диапазона, позволяя выполнять итерацию по парам "ключ-значение" карты.
winrt::Windows::Foundation::Collections::IMap<K, V> map;
for (auto&& [key, value] : map) { ... }
Свойства
Key |
Возвращает ключ пары "ключ-значение". |
Value |
Возвращает значение пары "ключ-значение". |