<p>I'm interested: What is C#'s analog of <code>std::pair</code> in C++? I found <code>System.Web.UI.Pair</code> class, but I'd prefer something template-based.</p>

<p>Thank you!</p>

Tuples
are available since .NET4.0
and support generics:
```
```
Tuple<string, int> t = new Tuple<string, int>("Hello", 4);
```
```
In previous versions you can use
```
System.Collections.Generic.KeyValuePair<K, V>
```
or a solution like the following:
```
```
public class Pair<T, U> {
    public Pair() {
    }

    public Pair(T first, U second) {
        this.First = first;
        this.Second = second;
    }

    public T First { get; set; }
    public U Second { get; set; }
};
```
```
And use it like this:
```
```
Pair<String, int> pair = new Pair<String, int>("test", 2);
Console.WriteLine(pair.First);
Console.WriteLine(pair.Second);
```
```
This outputs:
```
```
test
2
```
```
Or even this chained pairs:
```
```
Pair<Pair<String, int>, bool> pair = new Pair<Pair<String, int>, bool>();
pair.First = new Pair<String, int>();
pair.First.First = "test";
pair.First.Second = 12;
pair.Second = true;

Console.WriteLine(pair.First.First);
Console.WriteLine(pair.First.Second);
Console.WriteLine(pair.Second);
```
```
That outputs:
```
```
test
12
true
```
```