2010-05-16 6 views
0

J'ai une obligation de mettre en œuvre une sorte d'objet dictionnaire. Quelque chose comme MyDict<K,V1, V2). Par exemple, si j'ai une question en tant que clé (k) alors la réponse correcte est V1. V2 est la réponse sélectionnée par l'utilisateur. Existe-t-il une collection qui satisferait cette exigence en C#. Si je dois concevoir mon propre type, quelles interfaces dois-je implémenter? ICollection et Ilist?C# Collection générique aide

+0

version du .NET Framework? –

+0

Le cadre est .net 3.5 – dcmovva

Répondre

1

Si vous utilisez .NET 4, vous pouvez utiliser plusieurs classes Tuple génériques.

Ainsi, vous pouvez utiliser:

Dictionary<T,Tuple<V1,V2>> 

Dans les versions précédentes, vous pouvez utiliser KeyValuePair<T1,T2> comme deuxième type générique:

Dictionary<T,KeyValuePair<V1,V2>> 
+0

intéressant. Il pourrait y avoir plusieurs bonnes réponses à l'avenir aussi. Donc, je devrais simplement créer le type sans génériques. comme classe montype { string Question; IList correctAnswers; IList SelectedAnswers; }} – dcmovva

1

Les classes de collection sont définies comme faisant partie de l'espace de noms System.Collections ou System.Collections.Generic.

Generic Dictionary Class

quelque chose le long des lignes:

 Dictionary<Question,Answer> qDict = new Dictionary<Question, Answer>(); 

     Answer attempt_v2 = new Answer(); 
     Question question = new Question(); 
     if (qDict.ContainsKey(question)) 
     { 
      Answer actual_answerv1 = qDict[question]; 

      if (actual_answerv1 == attempt_v2) 
      { 
       // Answers match 
      } 
     } 

[Note: Je frappais ça. Ce n'est peut-être pas la meilleure solution au problème de correspondance des questions et des réponses ...]

+0

Merci pour votre aide. Devrait être quelque chose comme ça. – dcmovva

0

Je pense une nouvelle mise en œuvre est nécessaire.

OU si votre réponse a une propriété sélectionnée, vous pouvez créer.

Dictionary<Question, IList<Answer>> 

ou u peut avoir un type avec

class Answers { 
    Ilist Answers; 
    Answer Selected; 
} 
+0

Merci pour la réponse – dcmovva