11
votes

Comment initialiser le dictionnaire sous forme de paire (clé, valeur, valeur) dans c #

Je veux stocker des valeurs comme clé, valeur, paire de valeur. Mes données sont de type xxx

comment initialiser et récupérer des valeurs de ce dictionnaire. J'utilise VS-2005.

Si j'utilise une classe ou une structure, alors comment puis-je chercher les valeurs.


0 commentaires

9 Réponses :


0
votes

Peut-être que vous devez définir une paire de classe de classe Say pour contenir vos deux valeur et utiliser Int comme clé.


0 commentaires

14
votes

Vous pouvez déclarer une classe qui stocke les deux valeurs, puis utilisez un dictionnaire ordinaire. Par exemple: xxx


5 commentaires

Vous pouvez plutôt faire des valeurs une structure à la place.


Serait probablement préférable d'utiliser KeyValuePair au lieu d'une classe personnalisée ou d'utiliser au moins une structure.


Une structure pourrait donner une certaine espace d'économie et serait plus malicalement correcte, mais la différence est mineure et pas si importante.


Deux ulongs ont 16 octets, alors oui, c'est l'un des rares cas où une structure est appropriée. En ce qui concerne le keyvaluepair, je ne l'utiliserais que si réellement les deux valeurs sont destinés à être une clé et une valeur, de rendre le code plus compréhensible.


Qu'est-ce que la syntaxe "Var Thédication" signifie? Est-ce que quelque chose comme ça a permis?



10
votes

Ce serait une option: xxx

si vous souhaitez ajouter une valeur: touche = 1, paire = {2,3} xxx

Si vous souhaitez extraire ces valeurs: xxx

ou simplement: xxx


9 commentaires

Je préfère l'approche de Konamiman comme il est plus propre, mais cela fera sans nouvelle classe.


Mais comment puis-je initialiser les valeurs..give de récupérer du code aussi :)


Cela donnerait deux clés et une valeur. Bien que cela puisse fonctionner, cela serait déroutant.


Naspinski, qui semblerait comme réinventer la roue, ne pensez-vous pas?


Sémantiquement, un keyvaluepair consiste en une clé clé et une valeur . L'OP veut stocker deux valeurs , alors bien qu'un keyvaluepair fera le truc ce n'est pas un excellent ajustement "sémantique".


ne réinventant pas vraiment une roue, juste une approche différente - il suffit de rester à la base des types .NET - comme je l'ai dit, je vais personnellement aller avec une nouvelle classe, mais l'OP a demandé un dictionnaire


@astander: Si vous créez une classe personnalisée, vous pouvez attribuer des noms peut-être plus significatif aux variables de membre que «clé» et «valeur».


Luke, je ne suivez pas votre logique - peu importe ce que vous retournez (si vous utilisez un dictionnaire comme l'OP demanda), car il doit avoir 2 valeurs, ce sera un objet de type, que ce soit une nouvelle classe , tableau, liste, kvp, etc.


@naspinsky: Si vous utilisez un KeyValuePair Vous racontez efficacement les consommateurs / mainteneurs de votre code que chaque paire se compose d'une clé et d'une valeur , qui est trompeuse (bien que parfaitement fonctionnelle).



1
votes

Je ne suis pas sûr de comprendre votre question correctement, mais si vous souhaitez stocker plus d'une valeur dans la partie de la valeur du dictionnaire, vous pouvez faire quelque chose comme ceci: xxx

vous Peut utiliser Insérer dans le dictionnaire comme ceci: xxx

et récupérez les valeurs comme: xxx


2 commentaires

Sémantiquement, un keyvaluepair consiste en une clé clé et une valeur . L'OP veut stocker deux valeurs , alors bien qu'un keyvaluepair fera le truc ce n'est pas un excellent ajustement "sémantique".


À droite, mais je préférerais toujours cette solution pour écrire une structure personnalisée pour cette tâche spécifique.



0
votes

Vous pouvez utiliser le keyvaluepair xxx


0 commentaires

17
votes

Créer une structure pour stocker vos valeurs:

list.Add(new ValuePair { Value1 = 1, Value2 = 2 });


3 commentaires

Comment vais-je ajouter la valeur dans la liste?


@Nosheenjaved list.add (nouvelle valeurPair {Value1 = 1, valeur2 = 2});


@bniwredyc simple mais puissant..Merci



0
votes

regarder Wintellect.PowerCollections Espace de noms Ils ont une paire de structures spéciale <(de) et des collections à travailler avec elle Ou vous devrez coder votre propre type de paire.


0 commentaires

6
votes

Créer une classe de tuple, dans l'espace de noms système:

public static class Tuple
{
    public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2)
    {
        return new Tuple<T1, T2>(item1, item2);
    }
}


0 commentaires

1
votes

en C # 4, vous aurez le type de tuple pour votre valeur, paire de valeur.

Il y a un Article MSDN décrivant le type et les décisions de conception derrière elle.


0 commentaires