Поделиться через


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

Возвращает значение пары "ключ-значение".

Применяется к

См. также раздел