IKeyValuePair<K,V> 接口

定义

表示键值对。 当需要将两个类型参数封装到一个类型,以满足另一个泛型接口的约束时,这通常用作约束类型。

.NET 此接口显示为 System.Collections.Generic.KeyValuePair<TKey,TValue> (结构,而不是接口) 。 在Windows 运行时类型已实现 IKeyValuePair<K、V> 的情况下,.NET 代码可以改用 KeyValuePair 的 API。

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 进行编程时,此接口处于隐藏状态,开发人员应使用 System.Collections.Generic.KeyValuePair<TKey,TValue> 结构。 如果Windows 运行时类型已实现 IKeyValuePair<K,V>,包括接口继承 IKeyValuePair<K、V> 或将其用作内部约束时,.NET 代码可以将它视为 .NET KeyValuePair

当键值对继承 IIterable<T> 时,在 IMap<K、V> 接口中使用。 IMap<K、V> 的实际实现是可迭代的,迭代或调用 First/Current 将返回与 IMap<K、V 实现相同的约束的 IKeyValuePair<K、>V > 实例。

C++/WinRT 扩展函数

注意

某些Windows 运行时 API 的 C++/WinRT 投影类型上存在扩展函数。 例如, winrt::Windows::Foundation::IAsyncActionIAsyncAction 的 C++/WinRT 投影类型。 扩展函数不属于应用程序二进制接口 (ABI) 实际Windows 运行时类型的图面,因此它们不会列为Windows 运行时 API 的成员。 但是,可以从任何 C++/WinRT 项目中调用它们。 请参阅扩展Windows 运行时 API 的 C++/WinRT 函数

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

获取键值对的值。

适用于

另请参阅