8
votes

Représentant N-tuples dactylographiés en C #

List<struct {string, string, double} > L = new List<struct {string, string, double}>;
L.Add({"hi", "mom", 5.0});
What is the nicest way to get this functionality in C#? I want to define a strongly-typed tuple on the fly (for use in a local function), save a bunch of them in a list, do some processing and return a result, never to touch the list again.I don't actually care about the strong typing, but a List of vars doesn't work. Do I want a list of objects? Is that the closest I can get?Defining structs or classes for temporary data structures seems verbose and pedantic to me.

1 commentaires

Trop de programmation Lua peut m'avoir ruiné.


7 Réponses :





7
votes

Le meilleur moyen de représenter cela en C # est d'utiliser le type code> T -ple code> type

var l = new List<Tuple<string, string, double>>();
l.Add(Tuple.Create("hi", "mom", 42.0));


1 commentaires

Vous pouvez également écrire une méthode d'extension pour rendre un peu moins verbeux. Ensuite, vous pourriez faire quelque chose comme L.Ajoud (1,2,3);



6
votes
var arr = new[] { new { Text = "hi", Name = "mom", Value = 5.0 } };

1 commentaires

Personnellement, je préférerais aussi les types anonymes ici.



2
votes
List<Tuple<string, string, double>> L = new List<Tuple<string, string, double>>();
L.Add(Tuple.Create("hi", "mom", 5.0));
More on the Tuple class.

0 commentaires

1
votes

La manière la plus simple que je puisse penser serait d'utiliser des tuples: xxx

Vous pouvez également utiliser une liste de dynamiques


1 commentaires

expandoObject peut être le type dynamique à utiliser.