2010-05-16 104 views
0

我有一個實現某種字典對象的需求。像MyDict<K,V1, V2)。例如,如果我有一個問題作爲關鍵(k),那麼正確的答案是V1。 V2是用戶選擇的答案。是否有一個集合可以滿足C#中的這個需求。如果我必須設計自己的類型,我應該實現什麼接口。 ICollectionIlistC#泛型集合幫助

+0

該版本的.NET Framework的類型? – 2010-05-16 06:54:45

+0

框架是.net 3.5 – dcmovva 2010-05-16 06:58:27

回答

1

如果您使用的是.NET 4,則可以使用幾個通用的Tuple類。

所以,你可以使用:

Dictionary<T,Tuple<V1,V2>> 

在早期版本中,你可以使用KeyValuePair<T1,T2>作爲第二泛型類型:

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

有趣。未來也可能有多個正確的答案。所以我應該創建一個沒有任何泛型的類型。 like class mytype { string問題; IList CorrectAnswers; IList SelectedAnswers; } } – dcmovva 2010-05-16 07:08:53

1

集合類被定義爲System.CollectionsSystem.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 2010-05-16 07:10:58

0

我認爲需要一個新的實現。

或者如果您的答案有一個屬性選擇您可以創建。

Dictionary<Question, IList<Answer>> 

或U可以有

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

感謝回覆 – dcmovva 2010-05-16 07:11:46