2010-05-16 217 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