IKeyValuePair<K,V> Interfaz
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un par clave-valor. Normalmente se usa como un tipo de restricción cuando es necesario encapsular dos parámetros de tipo en uno para satisfacer las restricciones de otra interfaz genérica.
.RED Esta interfaz aparece como System.Collections.Generic.KeyValuePair<TKey,TValue> (una estructura, no una interfaz). En cualquier caso en el que un tipo de Windows Runtime haya implementado IKeyValuePair<K,V>, el código .NET puede usar las API de KeyValuePair en su lugar.
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
- Atributos
Familia de dispositivos |
Windows 10 (se introdujo en la versión 10.0.10240.0)
|
API contract |
Windows.Foundation.FoundationContract (se introdujo en la versión v1.0)
|
Al programar con .NET, esta interfaz está oculta y los desarrolladores deben usar la estructura System.Collections.Generic.KeyValuePair<TKey,TValue> . En cualquier caso en el que un tipo de Windows Runtime haya implementado IKeyValuePair<K,V>, incluidos los casos en que las interfaces han heredado IKeyValuePair<K,V> o lo han usado como restricción interna, el código .NET puede tratarlo como un .NET KeyValuePair.
Los pares clave-valor se usan en la interfaz IMap<K,V>, cuando hereda T iIterable<.> Las implementaciones prácticas de IMap<K,V> son iterables y la iteración o llamada a First/Current devolverá explícitamente instancias de IKeyValuePair<K,V> con las mismas restricciones que la implementación de IMap<K,V> .
Nota
Existen funciones de extensión en los tipos de proyección de C++/WinRT para determinadas API de Windows Runtime. Por ejemplo, winrt::Windows::Foundation::IAsyncAction es el tipo de proyección de C++/WinRT para IAsyncAction. Las funciones de extensión no forman parte de la superficie de la interfaz binaria de la aplicación (ABI) de los tipos de Windows Runtime reales, por lo que no se muestran como miembros de las API de Windows Runtime. Pero puedes llamarlos desde cualquier proyecto de C++/WinRT. Consulta Funciones de C++/WinRT que amplían las API de Windows Runtime.
operator==
Comparando dos objetos KeyValuePair , compara las claves y los valores en lugar de comparar las interfaces.
IKeyValuePair<K, V> admite el enlace estructurado. Por ejemplo,
auto&& [key, value] = kvp;
es equivalente a,
auto key = kvp.Key();
auto value = kvp.Value();
El enlace estructurado es especialmente conveniente en bucles basados en for
intervalos, lo que le permite recorrer en iteración los pares clave-valor de un mapa.
winrt::Windows::Foundation::Collections::IMap<K, V> map;
for (auto&& [key, value] : map) { ... }