Comme l'a dit Scott Chamberlain (et plusieurs autres) , Tuples fonctionne mieux si cela ne vous dérange pas d'avoir des objets immuables (c'est-à-dire en lecture seule).
Si, comme suggéré par David, vous voulez faire référence à l'int par la valeur de chaîne, par exemple, vous devez utiliser un dictionnaire
Dictionary<string, int> d = new Dictionary<string, int>();
d.Add("string", 1);
Console.WriteLine(d["string"]);//prints 1
Toutefois, si vous souhaitez stocker vos éléments mutably dans un liste, et ne veulent pas utiliser un système de référencement de style dictionnaire, alors votre meilleur pari (ie seule solution réelle en ce moment) serait d'utiliser KeyValuePair, qui est essentiellement std :: paire pour C#:
var kvp=new KeyValuePair<int, string>(2, "a");
//kvp.Key=2 and a.Value="a";
kvp.Key = 3;//both key and
kvp.Value = "b";//value are mutable
Bien sûr, c'est empilable, donc si vous avez besoin d'un plus grand tuple (comme si vous aviez besoin de 4 el ements) vous venez de l'empiler. Certes cela devient laid très vite:
var quad=new KeyValuePair<KeyValuePair<int,string>, KeyValuePair<int,string>>
(new KeyValuePair<int,string>(3,"a"),
new KeyValuePair<int,string>(4,"b"));
//quad.Key.Key=3
Alors, évidemment, si vous deviez faire, vous devez définir probablement aussi une fonction auxiliaire.
Mon conseil est que si votre tuple contient plus de 2 éléments, définissez votre propre classe. Vous pouvez utiliser un typedef-esque en utilisant comme déclaration:
using quad = KeyValuePair<KeyValuePair<int,string>, KeyValuePair<int,string>>;
mais cela ne rend pas votre instanciations plus facile.Vous passeriez probablement beaucoup moins de temps à écrire des paramètres de template et plus de temps sur le code non-standard si vous utilisez une classe définie par l'utilisateur lorsque vous travaillez avec des tuples de plus de 2 éléments
Vous devriez probablement donner un peu plus de détails sur votre problème réel, de sorte que vous compreniez clairement pourquoi vous y parvenez de cette façon. –
Pour quoi voulez-vous utiliser la liste? – Crisfole
Je ne veux pas de dictionnaire. J'essayais d'utiliser un exemple simple ... Je vais utiliser deux chaînes que je reviens au format JSON via ASP.NET MVC 'Controller.Json' – Darcy