2010-05-16 2 views
0

У меня есть требование реализовать какой-то словарь. Что-то вроде MyDict<K,V1, V2). Например, если у меня есть вопрос как ключ (k), то правильным ответом является V1. V2 - это выбранный пользователем ответ. Есть ли коллекция, которая удовлетворяет этому требованию в C#. Если мне нужно разработать свой собственный тип, какие интерфейсы я должен реализовать. ICollection и Ilist?C# Generic Collection help

+0

какой версии .NET Framework? –

+0

Рамка. .net 3.5 – dcmovva

ответ

1

Если вы используете .NET 4, существует несколько общих классов Tuple, которые вы можете использовать.

Таким образом, вы можете использовать:

Dictionary<T,Tuple<V1,V2>> 

В более ранних версиях можно был использовать KeyValuePair<T1,T2> в качестве второго универсального типа:

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

интересный. В будущем может быть много правильных ответов. Поэтому я должен просто создать тип без каких-либо дженериков. класс mytype { string Вопрос; IList CorrectAnswers; IList SelectedAnswers; } } – dcmovva

1

Классы коллекции определены как часть пространства имен System.Collections или System.Collections.Generic.

Generic Dictionary Class

что-то вдоль линий:

 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 
      } 
     } 

[Примечание: Я просто постучался, что до. Это может быть не лучшее решение проблемы совпадения вопросов и ответов ...]

+0

Спасибо за помощь. Должно быть что-то вроде этого. – dcmovva

0

Я думаю, что нужна новая реализация.

ИЛИ если в вашем ответе есть свойство Выбранное, вы можете создать.

Dictionary<Question, IList<Answer>> 

или и может иметь тип с

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

благодарит за ответ – dcmovva

Смежные вопросы