¿Cuál es la mejor manera de usar un par (triple, etc.) de valores como un valor en C #?

Es decir, me gustaría tener una tupla de valores.

El caso de uso en mi mente:

<code>Dictionary<Pair<string, int>, object>
</code>

o

<code>Dictionary<Triple<string, int, int>, object>
</code>

¿Hay tipos incorporados como Par o Triple? ¿O cuál es la mejor manera de implementarlo?

Actualizar En las respuestas se describen algunas implementaciones de tuplas de propósito general, pero para tuplas usadas como claves en diccionarios, debe verificar adicionalmente el cálculo correcto del código hash. Un poco más de información sobre eso en otro.pregunta.

Actualización 2 Creo que también vale la pena recordar que cuando se utiliza algún valor como clave en el diccionario, debería ser inmutable.

Respuestas a la pregunta(16)

Su respuesta a la pregunta