Skip to main content
KeyValuePair Structure
 
System_CAPS_noteNote

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Defines a key/value pair that can be set or retrieved.

Namespace:   System.Collections.Generic
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
public struct KeyValuePair<TKey, TValue>
generic<typename TKey, typename TValue>
[SerializableAttribute]
public value struct KeyValuePair
[<Sealed>]
[<SerializableAttribute>]
type KeyValuePair<'TKey, 'TValue> = struct end
<SerializableAttribute>
Public Structure KeyValuePair(Of TKey, TValue)

Type Parameters

TKey

The type of the key.

TValue

The type of the value.

NameDescription
System_CAPS_pubmethod KeyValuePair

Initializes a new instance of the KeyValuePair structure with the specified key and value.

NameDescription
System_CAPS_pubproperty

Gets the key in the key/value pair.

System_CAPS_pubproperty

Gets the value in the key/value pair.

NameDescription
System_CAPS_pubmethod Equals

Indicates whether this instance and a specified object are equal.(Inherited from ValueType.)

System_CAPS_pubmethod GetHashCode

Returns the hash code for this instance.(Inherited from ValueType.)

System_CAPS_pubmethod GetType

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_pubmethod ToString

Returns a string representation of the KeyValuePair, using the string representations of the key and value.(Overrides ValueTypeToString.)

The property returns an instance of this type.

The foreach statement of the C# language (for each in C++, For Each in Visual Basic) returns an object of the type of the elements in the collection. Since each element of a collection based on IDictionary is a key/value pair, the element type is not the type of the key or the type of the value. Instead, the element type is KeyValuePair. For example:

foreach( KeyValuePair<string, string> kvp in myDictionary )
{
    Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
}
For Each kvp As KeyValuePair(Of String, String) In myDictionary
    Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value)
Next kvp
for each(KeyValuePair<String^, String^> kvp in myDictionary)
{
    Console::WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
}

The foreach statement is a wrapper around the enumerator, which allows only reading from, not writing to, the collection.

The following code example shows how to enumerate the keys and values in a dictionary, using the KeyValuePair structure.

This code is part of a larger example provided for the Dictionary class.

// When you use foreach to enumerate dictionary elements,
// the elements are retrieved as KeyValuePair objects.
Console.WriteLine();
foreach( KeyValuePair<string, string> kvp in openWith )
{
    Console.WriteLine("Key = {0}, Value = {1}", 
        kvp.Key, kvp.Value);
}
' When you use foreach to enumerate dictionary elements,
' the elements are retrieved as KeyValuePair objects.
Console.WriteLine()
For Each kvp As KeyValuePair(Of String, String) In openWith
    Console.WriteLine("Key = {0}, Value = {1}", _
        kvp.Key, kvp.Value)
Next kvp
// When you use foreach to enumerate dictionary elements,
// the elements are retrieved as KeyValuePair objects.
Console::WriteLine();
for each( KeyValuePair<String^, String^> kvp in openWith )
{
    Console::WriteLine("Key = {0}, Value = {1}",
        kvp.Key, kvp.Value);
}
Universal Windows Platform
Available since 8
.NET Framework
Available since 2.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top