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.
7 Réponses :
Si vous utilisez C # 4.0, vous pouvez utiliser le tuple a> type p>
Notez qu'il est immuable et vous donne également une propriété légèrement bizarre. Appareans à la recherche légèrement impairs, .Item2 etc Propriétés pour accéder à chaque valeur de composant TUPLE
Vous pouvez également consulter Utilisation des types anonymes a> comme alternative aux tuples. Exemple d'initialisation de la matrice de types anon et boucle sur le résultat: p>
Le problème est qu'il est très difficile de déclarer une liste t code> est un type anonyme.
Si vous ne l'utilisez que dans le contexte d'une méthode unique, vous n'avez pas besoin de spécifier t code>. Vous pouvez utiliser une combinaison de Var code> Inference, linq .tolist () code> et classes anonymes pour le gérer.
@Gabe: Je sais que l'OP a mentionné une liste mais je ne sais pas qu'une liste
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));
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);
var arr = new[] { new { Text = "hi", Name = "mom", Value = 5.0 } };
Personnellement, je préférerais aussi les types anonymes ici.
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.
La manière la plus simple que je puisse penser serait d'utiliser des tuples: Vous pouvez également utiliser une liste de dynamiques p> p>
expandoObject code> peut être le type dynamique à utiliser.
Trop de programmation Lua peut m'avoir ruiné.