IKeyValuePair<K,V> 接口

定义

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

。网 此接口显示为 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

键值对在 IMap<K,V> 接口继承 IIterable<T> 时使用。 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

获取键值对的值。

适用于

另请参阅